让我们假设站点A使用指向服务器B的标准脚本标记嵌入javascript文件。下一站点A向服务器B上的资源发出JSONP或AJAX请求。无论如何,服务器B都明确知道特定的JSONP请求源自站点A上的用户,而不是来自欺骗其HTTP REFERRER的其他站点上的用户。
我认为存在任何可能性的唯一原因是因为站点A开始与它嵌入服务器B的javascript进行通信。在某种程度上,这种原始通信不能充当安全握手,允许后续呼叫安全地通过。但是因为通过不安全的手段进行握手并不能阻止它作为安全握手。
有关如何完成此任务的任何想法?我能想到的每一个解决方案都被AJAX调用的每个元素都伪造的概念打破了。
我读过http://www.codinghorror.com/blog/2008/10/preventing-csrf-and-xsrf-attacks.html和Detecting Ajax in PHP and making sure request was from my own website但据我所知,他们专注于确保用户的准确性而不是推荐人的准确性。
答案 0 :(得分:1)
如果您希望将服务器配置为需要mutual authentication,则可以通过https进行Ajax。
答案 1 :(得分:0)
您可以使用Hash_chain来验证来源。
页面加载从随机生成X次哈希并发送带有初始请求的最后一个哈希(脚本标记),例如散列[100]。每个下一个请求都使用Hash [Last-1]发送。
在服务器B上检查hash(resieved_hash)是否与last last相同。