什么浏览器允许javascript成为图像标签的来源?

时间:2010-07-21 21:08:19

标签: javascript xss security

我听说可以通过将图像发布到具有javascript作为src属性的网站来完成一些XSS攻击。是否有某些浏览器可以保护我免受此类攻击?

4 个答案:

答案 0 :(得分:3)

来自http://ha.ckers.org/xss.html

使用JavaScript指令的图像XSS(IE7.0不支持图像上下文中的JavaScript指令,但它在其他上下文中也是如此,但以下显示了其他标记中可用的原则 - 我'我可能会在以后修改它:)

<IMG SRC="javascript:alert('XSS');">

浏览器支持:[IE7.0 | IE6.0 | NS8.1-IE ] [NS8.1-G | FF2.0] [ O9.02 ]

答案 1 :(得分:1)

不确定哪些浏览器会检测到它,但以下是如何防止它:

  • 要求在GET和POST参数中进行身份验证,而不仅仅是Cookie;
  • 检查HTTP Referer标头;
  • 确保没有允许无意访问Flash电影的crossdomain.xml文件
  • 限制身份验证Cookie的生命周期
  • 处理POST时,如果您知道它们应来自表单,请忽略URL参数
  • 在所有表单提交和副作用URL中要求使用特定于用户的秘密令牌,以防止CSRF;攻击者的网站无法在其提交的内容中加入正确的令牌。

来源:http://en.wikipedia.org/wiki/Cross-site_request_forgery#Prevention

答案 2 :(得分:1)

Mozilla Firefox w / addon NoScript。基本上迫使你手动运行来自未知来源的javascripts。

答案 3 :(得分:0)

我知道没有浏览器允许在图片代码的src=属性中执行javascript。如果任何浏览器这样做,那么它是浏览器中的漏洞,应该为该浏览器发出一个CVE编号,它将被修补。 修改: I have tested this against the most recent IE8, chrome and firefox, and they have all patched this issue.如果您仍然容易受到攻击,那么您手上就会遇到 MUCH 更大的问题,因为攻击者最挑剔的是能够弹出一个shell你的盒子。

但是,<img src=img.jpg onload="alert(/xss/)"/>可用于执行javascript。因此,如果攻击者可以控制部分源,他可以注入如下字符串:src="fake.jpg" onload="alert(/xss/)"。这就是为什么应该使用htmlspeicalchars($image_location,ENT_QUOTES);代替htmlspecialchars($image_location)的原因。另一种方法是使用能够自动删除这样的javascript的Html Purifier

如果您想保护自己的浏览器免受XSS的侵害,那么您应该使用noscript。

允许使用图像标签来利用基于GET的XSRF。如果软件仅进行引用检查,则这尤其糟糕。但是,大多数应用程序使用基于令牌的xsrf保护,这使得请求免受此攻击。但是,您的站点可能被用于使用伪造的GET请求攻击其他人的站点,但这不是一个非常严重的威胁。一种保护方法是确保在该位置实际存在图像,如果不存在图像则拒绝img标记。