有没有办法安全地知道托管AJAX呼叫的原始服务器?

时间:2010-11-16 08:17:09

标签: php javascript ajax jsonp

让我们假设站点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.htmlDetecting Ajax in PHP and making sure request was from my own website但据我所知,他们专注于确保用户的准确性而不是推荐人的准确性。

2 个答案:

答案 0 :(得分:1)

如果您希望将服务器配置为需要mutual authentication,则可以通过https进行Ajax。

答案 1 :(得分:0)

您可以使用Hash_chain来验证来源。

页面加载从随机生成X次哈希并发送带有初始请求的最后一个哈希(脚本标记),例如散列[100]。每个下一个请求都使用Hash [Last-1]发送。

在服务器B上检查hash(resieved_hash)是否与last last相同。