【问题标题】:prevent access to send request to a special script [closed]阻止访问向特殊脚本发送请求[关闭]
【发布时间】:2020-03-01 19:06:34
【问题描述】:

我编写了一个简单的 php 脚本,它可以计算等量的其他货币(例如 BTC->DOGE),并且由于价格变化我必须动态更新它(例如每 30 秒)所以我使用了 javascript带有定期向 php 脚本发送 ajax 查询并获取结果的计时器...

但是由于管理服务器负载和我们带宽的使用,我希望其他人不能使用我的脚本并阻止他们请求运行我的脚本,并且只有我的站点可以运行它。我的问题是如何实现它?

我读到过在表单中​​使用令牌之类的东西,并在会话中设置它,并且每次在页面创建时都会生成令牌......但我不知道如何在 javascript 中实现它?

并且还在 $_HEADER 中使用检查 ORIGIN ...但我听说(我不知道是否正确)标题中的所有内容都不可靠并且可能是假的

请帮忙

谢谢大家

【问题讨论】:

  • 添加您有问题的代码,说明您正在尝试做什么,您尝试过什么以及您接受什么,只有 mysite 可以运行它您可以使用 cron 作业替代品。
  • 我正在发送一个 get ajax 请求

标签: javascript php token


【解决方案1】:

我明白你在问什么,简而言之;这实际上是不可能的,因为这就是 HTTP 的设计方式。但是您可以减轻尝试这样做的糟糕尝试;但不能完全屏蔽。

一个选项是检查 HTTP 标头以验证请求是否来自您的站点。

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(403);
    exit;
}
if (strpos($_SERVER['HTTP_REFERER'] ?? '', 'http://example.com') > 0 ) {
    // the request was NOT from my own site (http://example.com)
    http_response_code(403);
    exit;
}

要获得更有保障的区块,请实施 MTCaptcha 或 reCAPTCHA。上面的解决方案很容易被老练的黑客绕过。

【讨论】:

  • 谢谢,但我想要一个完全阻止的解决方案.. 你对我如何实施速率限制有什么想法?
  • 我不能使用验证码,因为我想在我自己的网站中使用它,而验证码让它变得很糟糕
  • 限速?尝试限制每个 cookie 和每个 ip 地址(因为 ip 地址的限制略高于 cookie 限制)。
猜你喜欢
  • 2020-04-11
  • 2020-10-30
  • 1970-01-01
  • 2020-11-03
  • 2017-04-17
  • 2021-06-01
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多