如何绕过 Safari 的 XSS 审核器,以便在开机自检时渲染远程 Flash 对象?



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

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

我在 #webkit 上用abarth解决了这个问题:

Safari 5 试图通过不允许出现在 POST 参数中的嵌入来防止反射 XSS 攻击。

我可以做两件事:

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

POST 的规范指示重定向:

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

如果已在 源站,响应应该是 201(已创建)并包含实体 它描述了 请求并引用新的 资源和位置标头(请参阅 第 14.30 节)。

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

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

最新更新