我编写了一个简单的 php 脚本,可以计算其他货币的等额货币(例如 BTC->DOGE),并且由于价格变化,我必须动态更新它(例如每 30 秒),所以我使用了 javascript使用计时器定期向 php 脚本发送 ajax 查询并获取结果...
但是由于管理服务器负载和带宽的使用,我希望其他人无法使用我的脚本并阻止他们请求运行我的脚本,并且只有我的站点可以运行它。我的问题是我如何实现它?
我读到过在表单中使用类似 token 之类的东西,并在 session 中设置它,并且每次在页面创建时都会生成 token ......但我不知道如何在javascript中实现它?
并且还在 $_HEADER 中使用检查 ORIGIN ...但我听说(我不知道是否正确) header 中的所有内容都不可靠并且可能是假的
请帮忙
谢谢大家
最佳答案
我明白你在问什么,简而言之;这实际上是不可能的,因为 HTTP 就是这样设计的。但您可以减轻试图这样做的糟糕尝试;但并不能完全阻止它。
一个选项是检查 HTTP header 以验证请求是否来自您的网站。
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;
}
要获得更有保障的区 block ,请实现 MTCaptcha 或 reCAPTCHA。经验丰富的黑客可以轻松绕过上述解决方案。
关于javascript - 阻止访问向特殊脚本发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60478742/