当前位置: 首页 > 面试题库 >

防止直接访问由ajax函数调用的文件

从景曜
2023-03-14
问题内容

我从像这样的ajax调用php代码:

ajaxRequest.open("GET", "func.php" + queryString, true);

由于这是一个获取请求,因此任何人都可以通过简单地检查标头来查看它。传递的数据不敏感,但由于获取参数名称也很容易,因此有可能被滥用。

如何阻止直接访问http://mysite/func.php却允许我的ajax页面访问它?


问题答案:

大多数Ajax请求/框架都应设置此特定标头,以用于过滤Ajax v非Ajax请求。我用它来帮助确定许多项目中的响应类型(json / html):

if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ) )
{
    // allow access....
} else {
    // ignore....
}

编辑:您可以在自己的Ajax请求中将此添加为自己,并在javascript代码中添加以下内容:

var xhrobj = new XMLHttpRequest();
xhrobj.setRequestHeader("X-Requested-With", "XMLHttpRequest");


 类似资料:
  • 问题内容: 我的网站上有一个说 “ check.php” 的php文件,在提交表单时执行。 说我的网站是 “ myweb.com” ,而php文件在目录“ PHP”中 我想防止直接访问“ check.php”文件的网址,即,如果有人键入网址“ **_myweb.com/PHP/check.php_** ”,则不应执行该php文件,而应返回一条错误消息。 我试图通过在.htaccess中设置规则来阻

  • 问题内容: 我有一个php文件,我将专门将其用作包含文件。因此,当我直接通过输入URL而不是将其包括在内直接访问它时,我想抛出一个错误而不是执行错误。 基本上我需要在php文件中进行如下检查: 是否有捷径可寻? 问题答案: 通用的“您可能会或可能不会完全控制的在Apache服务器上运行的PHP应用程序”情况的最简单方法是将includes放在目录中,并拒绝对.htaccess文件中的该目录的访问。

  • 问题内容: 我希望有一个网页使用AJAX来访问PHP文件 麻烦的是,我不希望人们能够在浏览器中键入地址来直接访问该PHP文件。 有什么办法可以使只有AJAX请求才能访问该文件? 我可以在PHP文件中检查某些内容来实现此目的吗? 问题答案: 如果您使用jQuery制作XHR,它将设置一个自定义标头。您可以检查并确定如何提供您的回复。 但是,这对于欺骗是微不足道的。过去,我曾用它来决定是渲染整个页面(

  • 问题内容: 我使用Minify来缩小并缓存所有脚本请求。 我只希望我的用户能够访问JavaScript文件的缩小版本。 Minify位于,我的脚本位于。如何阻止直接访问未缩小的JavaScript文件所在的位置。我宁愿不要将它们从文档根目录中删除,但这是一个选择。 请注意,我使用的是Zend Framework,因此应用程序的实际根目录已移至。htaccess文件可处理重写。 问题答案: 您不能仅

  • 问题内容: 如何防止我的用户直接访问仅用于ajax调用的页面? 在ajax调用期间传递密钥似乎是一种解决方案,但是不处理没有密钥的访问。但是制作密钥也很容易,不是吗?查看源的诅咒… p / s:使用Apache作为Web服务器。 编辑:要回答原因,我的index.php中有jQuery ui- tabs,并且在这些选项卡中是带有脚本的表单,如果直接访问它们将不起作用。我不知道为什么用户会想要这样做

  • 问题内容: 我有一个ajax电话 现在,这里是10分钟后收到的答复。因此,ajax调用被多次调用。为什么会发生这种情况/我们如何确保ajax调用仅被调用一次? 问题答案: 禁用按钮的另一种方法是使用.one()方法,并在回调后重新绑定事件处理程序: