为什么XMLHttpRequest的原始策略相同

时间:2009-12-02 01:05:53

标签: security jsonp javascript-security

为什么浏览器将相同的原始策略应用于XMLHttpRequest?它对开发人员来说真的很不方便,但它似乎在实际阻止黑客方面做得很少。 有一些解决方法,它们仍然可以包含来自外部来源的javascript(JSONP背后的力量)。

这似乎是网络中过时的“功能”,它在很大程度上是相互关联的。

1 个答案:

答案 0 :(得分:23)

因为XMLHttpRequest传递用户的身份验证令牌。如果用户使用基本身份验证或某些cookie登录到example.com,然后访问了attacker.com,后一个站点可以为example.com创建XMLHttpRequest,并为该用户提供完全授权,并读取用户可以访问的任何私人页面(然后把它转发给攻击者。)

因为在webapp页面中放置秘密令牌是阻止简单的跨站点请求伪造攻击的方法,这意味着,攻击者可以在未经用户同意或互动的情况下采取用户在example.com上进行的任何页面操作。他们。全局XMLHttpRequest是全局跨站点脚本。

(即使您有一个未通过身份验证的XMLHttpRequest版本,仍然存在问题。例如,攻击者可以向您的Intranet上的其他非公共计算机发出请求并读取它可以从中下载的任何文件这可能不适合公众消费。<script>标签已经受到此类漏洞的有限形式的影响,但XMLHttpRequest的完全可读的响应会泄漏所有类型的文件而不是一些不幸的文件,可以解析为JavaScript。)