猿问

跨域表单过帐

我已经看过有关该主题的文章和帖子(包括SO),并且普遍的评论是,同源策略阻止跨域的POST形式。我见过有人建议将同源政策不适用于表单帖子的唯一位置是此处。

我想从一个更“官方”或正式的来源获得答案。例如,是否有人知道解决同源性如何影响表单POST的RFC?

澄清:我不是在问是否可以构造GET或POST并将其发送到任何域。我在问:

  1. 如果Chrome,IE或Firefox允许域“ Y”中的内容将POST发送到域“ X”

  2. 如果收到POST的服务器实际上将看不到任何表单值。我之所以这样说,是因为大多数在线讨论都记录了测试人员说服务器收到了该帖子,但是表单值都是空的/已被剥离。

  3. 官方文件(即RFC)解释了预期的行为(无论浏览器当前已实现了什么)。

顺便说一句,如果同源源不影响表单POST,那么这使得为什么需要使用防伪令牌更加明显。我之所以说“有点”,是因为很难相信攻击者可以简单地发出HTTP GET来检索包含防伪令牌的表单,然后进行包含相同令牌的非法POST。评论?


catspeake
浏览 589回答 3
3回答

倚天杖

相同的原始策略与将请求发送到另一个url(不同的协议,域或端口)无关。这一切都是为了限制对另一个URL的访问(读取)响应数据。因此,页面内的JavaScript代码可以发布到任意域,也可以将该页面内的表单提交到任何地方(除非表单位于具有不同url的iframe中)。但是导致这些POST请求效率低下的原因是这些请求缺少防伪令牌,因此其他url会将其忽略。此外,如果JavaScript试图通过向受害者url发送AJAX请求来获取该安全性令牌,那么将通过Same Origin Policy阻止访问该数据。
随时随地看视频慕课网APP
我要回答