如果所有浏览器都使用同源策略,CSRF 攻击如何运作?
How do CSRF attacks work if all browsers use the Same-Origin Policy?
我无法理解 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 代码不会因为它是 "cross-orgin" 请求而失败吗?
怎么还能用?
同源策略阻止JavaScript读取来自不同源的响应。它不会阻止 请求 的发出(除非在某些有限的情况下)。
CSRF 攻击主要是发送恶意指令,而不是窃取数据。
我无法理解 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 代码不会因为它是 "cross-orgin" 请求而失败吗?
怎么还能用?
同源策略阻止JavaScript读取来自不同源的响应。它不会阻止 请求 的发出(除非在某些有限的情况下)。
CSRF 攻击主要是发送恶意指令,而不是窃取数据。