2008-10-27 47 views
6

我在我的网站上有一个富文本编辑器,我试图防范XSS攻击。我认为我几乎处理了所有事情,但我仍然不确定如何处理图像。现在,我使用下面的正则表达式来验证图像的URL,这我假设将阻止内嵌的JavaScript XSS攻击:从图像中跨站点脚本

"https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+" 

我不知道是怎么开这让我对XSS攻击来自什么远程图像。是否将外部图像链接到严重的安全威胁?

我唯一能想到的是URL输入引用了一个资源,它返回“text/javascript”作为它的MIME类型,而不是某种图像,然后执行该javascript。

这可能吗?我应该考虑是否存在其他安全威胁?

+2

我也建议ha.ckers.org小抄:ha.ckers.org/xss.html – 2008-10-27 19:04:34

回答

4

另一件值得担心的事情是,您可以轻松地将PHP代码嵌入图像中并在大多数情况下进行上传。攻击必须能够做的唯一事情就是找到一种包含图像的方法。 (只有PHP代码会被执行,其余的只是回显)。检查MIME类型不会对你有帮助,因为攻击者可以很容易地上传一个正确的前几个字节的图像,然后是任意的PHP代码。 (HTML和Javascript代码也是如此)。

+0

我不会让用户上传图片。由于诸如您提到的原因,用户只能链接到其他网站上的图像。 – 2008-10-27 19:06:53

+0

不是一个简单的文件名过滤器可以防止这种情况吗? – AaronSieb 2008-10-27 19:44:13

1

在这种情况下,请看周围的上下文:用户是否只提供一个URL?在这种情况下,只需验证URL语义和MIME类型即可。如果用户也需要输入某种类型的标签,则必须确保它们不可操纵,以便执行其他任何操作,然后显示图像。

2

如果最终查看器位于密码保护区域,并且您的应用程序包含根据GET请求发起操作的Url,则可以代表用户发出请求。

实例:

  • SRC = “http://yoursite.com/deleteuser.xxx?userid=1234”
  • SRC =“http://yoursite.com/user/delete/1234 “
  • SRC =” http://yoursite.com/dosomethingdangerous”