ajax 服务 php 文件的安全性


Security of ajax serving php file

想象一下情况,我有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,然后将此令牌附加到该用户。