【问题标题】:Block direct access to PHP files and allow json阻止直接访问 PHP 文件并允许 json
【发布时间】:2011-04-21 18:31:50
【问题描述】:

我正在尝试使用 php 脚本阻止一些文件,但是,我希望我的 javascript ajax 调用允许脚本,我不知道这是否可能但是..

我现在要做的是,

$filename = array('index.php');

$basename = basename($_SERVER['REQUEST_URI']);

if(!in_array($basename, $filename)) {
    die('...');
}

这将阻止所有文件而不是 index.php,但是如果我有一个 login.php 可以使我的 ajax 调用成为可能呢?

【问题讨论】:

  • 我真的不明白你的意思
  • 您是否使用任何插件来执行您的 AJAX?我相信 JQuery 和其他几个人设置了一个你可以检查的标题。
  • 这是不可能的。所有请求标头都可以伪造。如果您需要这样做以创建安全性,则需要重新考虑应用程序的安全性。

标签: php ajax block


【解决方案1】:

当您发送 JavaScript AJAX 调用时,它会添加

X-Requested-With : XmlHTTPRequest

到 HTTP 标头。所以如果你想在 AJAX 调用的情况下做点什么,你可以 检查类似的东西:

$headers = getallheaders();
if($headers['X-Requested-With') == 'XMLHttpRequest') {
    // ...
}

请记住,任何 HTTP 客户端都可以修改标头,因此它不会真正增加任何安全性(例如,浏览器无法使用默认设置直接调用您的 PHP 脚本)。

【讨论】:

  • 好吧——如果他们能看到发生了什么并不重要,因为他们仍然需要表单并且一切都在使用 PHP 进行验证。这只是从另一个文件重定向用户的简单方法。
猜你喜欢
  • 2016-10-24
  • 2011-02-10
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2014-01-22
  • 2023-03-18
相关资源
最近更新 更多