6

阅读http://dsecrg.com/files/pub/pdf/XSS_in_images_evasion_bypass_(eng).pdf后,很明显,允许用户上传图像会使您面临 XSS 攻击。

我找不到任何关于如何筛选上传的图像以防 XSS 攻击的 PHP 示例。

我为我正在使用的CodeIgniter找到了一个。该功能是xss_clean($file, IS_IMAGE),但它只有 1 句话的文档,所以我不知道它是如何工作的,他们论坛中的评论说它的误报率高得不合理,所以它在生产中不可用。

你有什么建议来防止上传图像中的 XSS 攻击?

4

2 回答 2

4

只要您保持扩展正确(并且您的用户努力更新他们的浏览器)图像注入应该是不可能的。

例如,如果有人alert('xss');作为图像上传并且您有<img src='that-image.png'>,它将作为 png 发出并且 JavaScript 不会执行(至少回到 IE7)。重要的是您适当地重命名图像。

如果你有 php > 5.3 和finfoPECL 扩展,你可以使用它来获取文件的 mime 类型,并有一个你将允许的类型的白名单(我想是 png、jpg、gif)。如果您在 Linux 机器上,file也可以帮助您。

于 2012-08-10T17:23:58.200 回答
0

在 CodeIgniter 中有很多方法可以防止 XSS。您可以在获取 ->post('data', true) 之类的值时启用它。第二个参数是 XSS 布尔值。

另外,不要使用 HTML IMG 标签。使用 CodeIgniter 可以清理、查看并使显示图像更容易。

只是我的两分钱!

于 2012-08-10T18:11:01.013 回答