作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于我网站上的 AJAX,我从 Javascript 文件调用 some.php?request=bla。我不希望用户查看此请求的结果,甚至不希望通过输入 www.myurl.com/something.php?request=bla 来运行 PHP 文件。我只希望我的服务器上的文件能够调用 PHP 文件。我考虑了很多事情,例如在 PHP 脚本本身中进行比较的 secret 值,但这听起来对于我想要的来说太复杂了。我确信有一种更简单的方法。
如何才能使 PHP 文件仅在服务器上现有的脚本调用它时才能运行?用户不应该能够使用地址栏运行它。
最佳答案
这根本不可能。您的 Ajax 请求始终来自客户端。
理论上,您可以检查 HTTP_REFERER
header ,但作为安全措施,这是完全无用的。来自客户端的请求(无论是否使用 Ajax)的每个方面都可以自由操作,包括引用字段。伪造据称是在您的页面上启动的 Ajax 请求是很简单的。
您没有必要首先施加这样的限制:如果您有适当的安全系统(例如登录),那么该系统的限制也将(或应该)适用于 Ajax 请求。
如果您的 Ajax 请求允许未经身份验证的有害操作(例如删除),则您需要添加身份验证。您无法将这些请求限制到特定的上下文或网站。
关于php - 如何只允许从我的服务器上的文件调用 PHP 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789124/
我是一名优秀的程序员,十分优秀!