想象一下情况,我有一个 ajax.php 文件,它根据 ajax 请求显示特定信息。
除了通过 ajax 来之外,我如何阻止所有去 ajax.php 文件的请求?
我在 php 中寻找这样的东西:
if ($ajax) {
//Do soemthing
}
这会保证恶意用户无法看到 ajax.php 必须显示的内容吗?由于ajax具有同源策略,请求必须来自同一个域,所以理论上没有人可以调用我的ajax.php?
想象一下情况,我有一个 ajax.php 文件,它根据 ajax 请求显示特定信息。
除了通过 ajax 来之外,我如何阻止所有去 ajax.php 文件的请求?
我在 php 中寻找这样的东西:
if ($ajax) {
//Do soemthing
}
这会保证恶意用户无法看到 ajax.php 必须显示的内容吗?由于ajax具有同源策略,请求必须来自同一个域,所以理论上没有人可以调用我的ajax.php?
永远无法可靠地判断一个请求是否是 Ajax 请求。任何客户端信息(如引用者)都可能被欺骗,您不能信任其中的任何信息。
您可以像任何其他请求一样保护 Ajax 请求 - 通常通过基于会话的登录系统检查请求的客户端是否已登录,以及允许他们查看的内容。
其他答案已经提到它:没有可靠的方法来确定是否通过 AJAX 请求调用了脚本。但我使用这段代码来检测 AJAX 请求:
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest');
请记住,它可以被欺骗,所以不要依赖它。
正在做什么来保护我们的 ajax 请求 - 每当当时任何用户登录时都会为该用户生成一个令牌,例如get the micro time and then convert into some hash
,然后将该令牌附加到该用户。