CSRF 攻击让我无法理解的一件事是,攻击如何将我们引诱到不同的站点,并且仍然能够使用我们的会话数据。
我认为如果浏览器指向像"trustworthysite.com"这样的网站,那么所有请求(表单,ajax,xmlhttprequests等)都必须指向同一域
例如。
<form action="http://trustworthysite.com/login" method="POST">
Your name: <input type="text"><br/>
<input type="hidden" name="amount" value="10000">
<input type="hidden" name="recipient" value="evil_hacker">
</form>
或
$.ajax({
url: "http://trustworthysite.com/post",
type: "POST",
data: postData,
success: function (data) {
},
error: function () {
}
});
但是,如果攻击者引诱使用"malicioussite.com",然后尝试运行上面的Javascript代码,它不会失败,因为它是一个"跨组织"请求吗?
怎么还能行得通?
同源策略阻止 JavaScript 从不同的源读取响应。它不会停止发出请求(除非在某些有限的情况下)。
CSRF 攻击主要是发送恶意指令,而不是窃取数据。