0

排除所有主要浏览器具有的相同来源策略和同步令牌模式(对所有请求进行令牌化会很痛苦),您将如何检查请求是否直接从我的用户界面发送而不是通过第三方发送。

例如,从 iframe 向 youtube 发送请求(我的意思是 src=... 不是 xmlhttprequest 对象),响应将是一个空白页面(他们是如何做到的?),向 facebook ajax 发送请求。来自 iframe 的 hovercard (它是一个简单的获取内容请求),地址栏也会给你一个空白页面(没有内容)。SO 响应是来自 iframe 请求的正常内容。

就像我之前说的,如果请求来自受信任的来源,您将如何检查(最好是一些服务器端代码)?

PS:不要依赖标头,我知道为什么我没有收到来自请求的来源,尽管我看到它们都在所有主要浏览器中实现了来源标头。一些ati spyware程序可以修改Refereer。无论如何,标题不能真正被信任。但是,是的,这表明它是一个检查层。

4

2 回答 2

0

您无法确定用户的来源。用户代理很容易被欺骗。我认为您可以在用户界面中创建一些 csrf 令牌,并只允许拥有这些令牌的客户端

于 2012-04-06T09:41:21.193 回答
0

检查$_SERVER['HTTP_REFERER']并查看它是否来自您自己的站点。

于 2012-04-06T09:36:53.360 回答