我听说可以通过将图像发布到具有javascript作为src属性的网站来完成一些XSS攻击。是否有某些浏览器可以保护我免受此类攻击?
答案 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)
不确定哪些浏览器会检测到它,但以下是如何防止它:
来源: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标记。