如何通过标签包含外部图片,会出现哪些安全漏洞,以及如何避免这些漏洞?
目前我只在提交时检查图像的扩展名和mime类型(可以在提交后更改),并且在将URL放入src属性之前对其进行了消毒处理。
这里可能需要区分的是,谁有风险。
如果你只是存储URL,而不上传图片到你的服务器,那么你的网站可能是安全的,任何潜在的风险都是针对访问你的网站的用户。
本质上,你正在信任浏览器制造商的可靠性。事情可能很好,但如果用户使用的某个浏览器出现了安全漏洞,涉及到不正确解析包含恶意代码的图像,那么就是你的用户将为此付出代价(你可能会发现GIFAR很有趣)。
关键在于你是否信任浏览器制造商制作安全软件,以及你是否信任你的用户不会上传包含特定浏览器漏洞的图像URL。现在可能是安全的,但下一个版本可能就不安全了。
可能会被攻击的主要漏洞是,当损坏的图像导致浏览器内部缓冲区溢出时,允许任意代码执行。
如果您只将图像放入<img>
标签中,则不应该存在与发送替代MIME类型有关的漏洞,但绝不要低估一些Web浏览器开发者愚蠢的能力...