0

想象一下情况,我有一个 ajax.php 文件,它根据 ajax 请求显示特定信息。

除了通过 ajax 来之外,我如何阻止所有去 ajax.php 文件的请求?

我在 php 中寻找这样的东西:

if ($ajax) {
 //Do soemthing
}

这会保证恶意用户无法看到 ajax.php 必须显示的内容吗?由于ajax具有同源策略,请求必须来自同一个域,所以理论上没有人可以调用我的ajax.php?

4

3 回答 3

2

永远无法可靠地判断一个请求是否是 Ajax 请求。任何客户端信息(如引用者)都可能被欺骗,您不能信任其中的任何信息。

您可以像任何其他请求一样保护 Ajax 请求 - 通常通过基于会话的登录系统检查请求的客户端是否已登录,以及允许他们查看的内容。

于 2013-10-12T15:49:06.657 回答
1

其他答案已经提到它:没有可靠的方法来确定是否通过 AJAX 请求调用了脚本。但我使用这段代码来检测 AJAX 请求:

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest');

请记住,它可以被欺骗,所以不要依赖它。

于 2013-10-12T19:52:52.400 回答
0

正在做什么来保护我们的 ajax 请求 - 每当当时任何用户登录时都会为该用户生成一个令牌,例如get the micro time and then convert into some hash,然后将该令牌附加到该用户。

于 2013-10-12T15:48:29.703 回答