![]() |
1
21
正如其他人所说,可以通过创建适当的头来模拟Ajax请求。 如果要进行基本检查以查看请求是否为Ajax请求,可以使用:
但是,您不应该将您的安全性建立在这张支票的基础上。如果您需要的话,它将消除对页面的直接访问。 |
![]() |
2
34
无法保证他们通过Ajax访问它。直接访问和Ajax访问都来自客户端,因此很容易被伪造。 你为什么要这样做? 如果是因为PHP代码不太安全,那么就让PHP代码更安全。(例如,如果您的Ajax将用户ID传递给php文件,请在php文件中编写代码以确保这是正确的用户ID。) |
![]() |
3
8
听起来你可能是走错了方向。Ajax调用就像一个标准的页面请求,只有按照约定,响应才不会显示给用户。 但是,它仍然是一个客户机请求,因此您必须为客户机能够看到响应感到高兴。以这种方式使用“键”模糊访问只会使事情复杂化。 事实上,我会说视点源的“诅咒”是通过默默无闻打击安全的一个小武器。 那么你为什么要这么做呢? |
![]() |
4
4
如果浏览器通过普通请求或Ajax调用您的页面,那么有人可以手动调用它。就服务器客户机通信而言,正常请求和Ajax请求之间确实没有明确的区别。 常见的情况是向服务器传递一个标题,上面写着“这个请求是由Ajax完成的”。如果您使用的是原型,它会自动将HTTP头“x-requested-with”设置为“xmlhttprequest”,以及其他一些头(包括原型版本)。(参见 http://www.prototypejs.org/api/ajax/options 在“请求标题”处) 附加:如果您正在使用另一个Ajax库,您可能可以添加自己的头。这对于了解服务器端的请求类型以及避免在浏览器中请求Ajax页面时出现简单情况非常有用。它不能保护你的请求不受任何人的影响,因为你不能。 |
![]() |
5
1
cookies不安全…试试美元课程。这几乎是你可以依靠的少数几个不被欺骗的跨页面的事情之一。因为,当然,它基本上永远不会离开你的控制。 |
![]() |
6
1
谢谢,尽管我用
干杯! |
![]() |
7
0
对此不确定,但可能要检查引用头?我认为如果有人手动输入你的URL,它就不会有一个引用头,而Ajax调用会(至少在我刚刚在系统上做的快速测试中)。 不过,这是一种糟糕的检查方式。由于很多原因,推荐人可以是空白的。您是否试图阻止人们将您的Web服务用作公共服务或其他服务? 在阅读了编辑注释之后,如果表单将通过Ajax调用加载,那么您可以检查window.location以查看该URL是否是Ajax表单的URL。如果是,请通过document.location转到右侧页面 |
|
8
0
这对确保安全肯定没用。但是我认为,如果您想说一个php页面,它生成了一个完整的页面,如果该页面不是Ajax请求的,而是在使用Ajax时只生成您需要返回的部分,那么这可能是有用的。这将使您的站点不适合Ajax,因此如果说他们单击了一个链接,并且应该加载一个注释框,但是他们没有Ajax,那么它仍然会将它们发送到显示注释的整个页面,然后生成该页面。 |
![]() |
9
0
通过index.php传递您的直接请求,通过ajax.php传递您的ajax请求,然后不要让用户直接浏览到任何其他源文件-确保index.php和ajax.php具有包含所需代码的适当逻辑。 |
![]() |
10
0
在调用脚本的javascript文件中:
然后在php文件ajax.php中:
极客仍然可以通过伪造头部来调用ajax.php脚本,但是我的脚本的其余部分需要会话,因此在没有检测到有效会话时执行将结束。我需要这样做才能将具有过期的hybridauth会话的人重定向到主站点,以便再次登录,因为他们最终被重定向到Ajax脚本。 |
![]() |
Adithya · Apache mod_重写以调用不同的URL 3 年前 |
![]() |
Coolen · 通过htaccess重定向并删除部分链接 3 年前 |
![]() |
ciromanfredi · Apache任务组执行 3 年前 |
![]() |
Rabi · php和libapache2 mod php之间的区别 3 年前 |