【发布时间】:2010-06-07 15:25:46
【问题描述】:
我的 WS 上有 AJAX 脚本。 有没有一种方法可以拒绝直接访问 ajax php 后端? 并且只有在我的 ajax 代码运行时才能访问它
【问题讨论】:
我的 WS 上有 AJAX 脚本。 有没有一种方法可以拒绝直接访问 ajax php 后端? 并且只有在我的 ajax 代码运行时才能访问它
【问题讨论】:
您可以尝试启发式方法(例如检查 X-Requested-With HTTP 标头),但不能作为任何安全措施。任何真正想要的人都可以轻松复制请求外观的任何此类差异。
【讨论】:
答案是否定的。
您的 ajax 调用访问 php 脚本的方式与任何其他方法一样直接。
也就是说,您可以通过不同方式限制对脚本的访问,例如要求仅在登录后创建的有效会话。但是,一旦用户登录,通过 ajax 脚本或“直接”访问后端都是公平的游戏。换句话说,您不能指望能够将 ajax 调用与服务器端的其他调用区分开来。
后端的安全性需要依赖于其他地方。
【讨论】:
在服务器端,您可以将其添加到后端文件的顶部:
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die("You need to use an AJAX request");
}
编辑:正如其他人所说,这作为一种安全措施并不可靠。
【讨论】: