阻止直接访问 PHP 页面

2022-08-30 22:34:48

如何防止我的用户直接访问仅用于ajax调用的页面?

在 ajax 调用期间传递密钥似乎是一种解决方案,而没有密钥的访问将不会被处理。但捏造钥匙也很容易,不是吗?视图源的诅咒...

p/s:使用Apache作为Web服务器。

编辑:为了回答为什么,我的索引中有jQuery ui-tabs.php,这些选项卡内部是带有脚本的表单,如果直接访问它们,这些脚本将不起作用。为什么用户想要这样做,我不知道,我只是认为通过阻止在没有验证脚本的情况下直接访问表单,我会更加用户友好。


答案 1

无法保证他们通过 AJAX 访问它。直接访问和 AJAX 访问都来自客户端,因此很容易被伪造。

为什么还要这样做?

如果是因为PHP代码不是很安全,请使PHP代码更安全。(例如,如果 AJAX 将用户 ID 传递给 PHP 文件,请在 PHP 文件中编写代码以确保该用户 ID 是正确的。


答案 2

正如其他人所说,Ajax请求可以通过创建正确的标头来模拟。如果你想进行基本检查以查看请求是否是Ajax请求,你可以使用:

 if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
     //Request identified as ajax request
 }

但是,您永远不应该将此检查的安全性基于此检查。如果这是您需要的,它将消除对页面的直接访问。


推荐