使用 PHP 防止映像中的 XSS 攻击


Use PHP to prevent XSS attacks within an image

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

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

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

您建议如何防止上传图像中的 XSS 攻击?

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

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

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

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

另外,不要使用 HTML IMG 标记。使用CodeIgniter,它可以清洁,查看并使其更容易显示图像。

就我的两分钱!