我对CSRF保护很新,所以请原谅我做出错误的假设或者我是否遗漏了什么,但我想确保我尽我所能阻止CSRF。从我迄今为止的研究中,我发现了以下内容:
当我到达第3点时,我决定尝试使用JSONP在Chrome中获取HTML内容;我打开了我的控制台(页面不是来自localhost)并运行以下代码:
$.ajax({
url: "http://localhost:8080/my-app/",
dataType: "jsonp",
jsonp: "alert"
}).done(function(data) {
alert(data);
});
我在控制台窗口收到的是:
资源解释为脚本但以MIME类型传输 text / html的
据我所知,浏览器基本上告诉我它收到了内容,继续解析响应,但因为类型不是application / json而停止了。最后,我的问题是,这可能会受到损害吗?即使浏览器无法将响应解析为JSON,它也会有响应。有没有办法可以将此响应解析为HTML,抓住我的CSRF nonce,并破坏我试图强制实施的保护措施?在我看来(我希望这是真的)浏览器不允许这样做,就像他们首先不允许跨域请求进行基本上所有其他通信一样,这就是我们开发人员所依赖的(除了同源政策)保护我们的网站。我的想法是否正确?