javascript - 是否可以对返回 JSON 对象的 URL 执行跨站点请求伪造攻击?

标签 javascript json xss security xmlhttprequest

我知道有一个 Cross site forgery attack可以通过重载 Array 构造函数对返回数组的请求执行。例如,假设我有一个带有 URL 的网站:

foo.com/getJson

返回:

['Puff the Dragon', 'Credit Card #'] 

这通常是由我自己的网站在 XHR 请求后进行 Javascript eval 处理,但另一个网站可以通过包含以下内容来嗅探此数据:

<script>
function Array() {
  var arr = this;
  var i = 0;
  var next = function(val) {
    arr[i++] setter = next;
    document.write(val);
  };
  this[i++] setter = next;
}
</script>
<script src="http://foo.com/getJson"></script>

我的问题是,当请求返回 Javascript 对象时可以做同样的事情吗?即

{ name: 'Puff the Dragon', cc: 'Credit Card #' }

我想不出办法来做到这一点,但也许我错过了一些东西。我知道有更好的解决方案来保护我的网站,例如使用 while(1) hack或者要求 URL 中包含身份验证 token ,但我正在尝试找出是否存在此类安全漏洞。

最佳答案

我见过的来源,比如HaackedHackademix ,特别表明根对象是安全的(大概在所有主要浏览器中)。这是因为脚本不能以对象文字开头。默认情况下,ASP.NET 使用 d prefix 包装对象和数组。 ,但我认为这只是为了简化客户端库。

关于javascript - 是否可以对返回 JSON 对象的 URL 执行跨站点请求伪造攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170196/

相关文章:

asp.net - AntiXss.HtmlEncode 和 HttpUtility.HtmlEncode 有什么区别?

javascript - 如何在 Quill(富文本编辑器)中检测和 trim 前导/尾随空格?

java.lang.NoClassDefFoundError : org/json/simple/JSONObject running outside of Netbeans IDE 错误

javascript - 动态下拉

json - Flutter - 如何将嵌套的 json 解析为具有泛型的类?

javascript - 带有时间的谷歌图表来自 php json

asp.net-mvc-2 - 我的 MVC2 站点需要 crossdomain.xml 文件吗?

python - 无需用户输入即可窃取 Cookie?

javascript - 在 NW.js 中打开没有菜单栏的新窗口

javascript - 如何使用javascript获取浏览器最后一次请求加载的文件列表?