我怎样才能绕过Safari的XSS审核员在POST上呈现远程flash对象?

时间:2011-05-17 19:40:06

标签: html flash safari xss

我有一个允许您嵌入YouTube视频的表单,当它发布POST时,它会呈现YouTube视频。问题是Safari(自5.0起)有一个XSS Auditor抛出此消息:Refused to load an object. URL found within request: "http://www.youtube.com/v/ZO7EiX5TqLY?version=3".

它适用于正常的GET后续词。有没有办法在没有重定向的情况下解决这个问题?

2 个答案:

答案 0 :(得分:2)

我在#webkit:

上用abarth解决了这个问题

Safari 5试图通过不允许出现在POSTed参数中的嵌入来阻止reflective XSS attack

我可以做两件事:

  1. 我可以发送X-XSS-Protection: 0标题,表示我知道自己在做什么,并且可以自行防范XSS。
  2. 我可以在一个参数中发送嵌入代码,这对我来说实际上是一个可行的选择,因为嵌入代码无论如何都会被后端剥离。

答案 1 :(得分:1)

POST的规格表示重定向:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

  

如果已在该资源上创建了资源   原始服务器,响应应该是   201(已创建)并包含实体   它描述了。的状态   请求并指新的   资源和位置标题(请参阅   第14.30节。

     

对此方法的回应不是   可缓存,除非响应   包括适当的Cache-Control或   过期标题字段。然而   可以使用303(参见其他)响应   指示用户代理检索   可缓存的资源。

既然你说它适用于后续的GET请求,那是否意味着你试图直接在POST响应中返回嵌入对象?如果是这样,似乎违反了规范,XSS Auditor可能就在这里。如果我误解了这个问题,你能澄清一下吗?