我已经看过有关此主题的所有文章和帖子(包括 SO),普遍的评论是同源策略会阻止跨域的表单 POST。 我唯一看到有人建议同源政策不适用于表单帖子的地方,在这里。
我想从更“官方”或正式的来源得到答案。 例如,有人知道解决同源如何影响或不影响表单 POST 的 RFC 吗?
澄清:我并不是问是否可以构建 GET 或 POST 并将其发送到任何域。 我问:
顺便说一句,如果同源不影响表单 POST - 那么它使得防伪令牌的必要性变得更加明显。 我说“某种程度上”是因为似乎很容易相信攻击者可以简单地发出 HTTP GET 来检索包含防伪令牌的表单,然后发出包含相同令牌的非法 POST。 评论?
同源策略仅适用于浏览器端编程语言。因此,如果您尝试使用 JavaScript 发布到与原始服务器不同的服务器,那么相同的原始策略就会发挥作用,但如果您直接从表单发布,即操作指向不同的服务器,例如:
<form action="http://someotherserver.com">
并且发布表单时不涉及 javascript,则同源策略不适用。
请参阅维基百科了解更多信息
可以构建任意 GET 或 POST 请求并将其发送到受害者浏览器可访问的任何服务器。 这包括本地网络上的设备,例如打印机和路由器。
构建 CSRF 漏洞的方法有很多种。 可以使用.submit()
方法发送基于POST的简单CSRF攻击。 更复杂的攻击,例如跨站点文件上传 CSRF 攻击,将利用 CORS 使用 xhr.withCredentals 行为。
CSRF 不违反 JavaScrip 的同源策略,因为 SOP 涉及 JavaScript 读取服务器对客户端请求的响应。 CSRF 攻击不关心响应,而是关心“副作用”,或请求产生的状态更改,例如添加管理用户或在服务器上执行任意代码。 确保使用
OWASP CSRF 预防备忘单中描述的方法之一保护您的请求。 有关 CSRF 的更多信息,请参阅CSRF 上的 OWASP 页面。