当前位置:  开发笔记 > 编程语言 > 正文

阻止直接访问PHP页面

如何解决《阻止直接访问PHP页面》经验,为你挑选了3个好方法。

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

在ajax调用期间传递密钥似乎是一种解决方案,而不使用密钥的访问将不会被处理.但是制作钥匙也很容易,不是吗?观点诅咒......

p/s:使用Apache作为webserver.

编辑:为了回答原因,我在index.php中有jQuery ui-tabs,并且这些选项卡内部是带有脚本的表单,如果直接访问它们将无法工作.为什么用户会想要这样做,我不知道,我只是想通过阻止直接访问没有验证脚本的表单来提高用户友好性.



1> Jeremy Ruten..:

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

你为什么要这样做呢?

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


没有更多的可以说了.永远不要*信任客户送你的东西.由于AJAX方法旨在将内容返回给浏览器,因此请确保后端只能返回授权数据.
我唯一的遗憾是我有骨头.

2> Eran Galperi..:

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

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

但是,您永远不应该根据此检查确定安全性.如果这是你需要的,它将消除对页面的直接访问.


Syaz,这不是基本安全.正如Eran正确地说 - "你永远不应该把你的安全放在这个检查上"这将非常容易伪造(我确定wget或许多firefox插件可以做到这一点非常简单)你仍然没有说为什么你可能想要这个 - 有什么安全保障?

3> Draemon..:

听起来你可能会以错误的方式处理事情.AJAX调用就像标准页面请求一样,只有按照惯例,响应才不会显示给用户.

但是,它仍然是客户端请求,因此您必须很高兴客户能够看到响应.以这种方式使用"密钥"来模糊访问只会使事情变得复杂.

我实际上说,观察源的"诅咒"是通过默默无闻来对抗安全的小武器.

那么你想要这样做的原因是什么?

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有