最近有一位用户向我报告说他们可以通过论坛利用他们可以使用的BBCode标签[img]。
[img=http://url.to.external.file.ext][img]
当然,它会显示为损坏的图像,但浏览器会在那里检索文件。我自己测试了它,确定它是合法的。
我不知道如何防止这种类型的XSS注入,除了下载图像并通过PHP检查它是否是合法的图像。这很容易被一个疯狂的文件滥用。
还有其他解决方法吗?
答案 0 :(得分:2)
您可以请求标题并检查文件是否实际上是图像。
修改强>
很抱歉,我无法更深入地回答;我正在享用晚餐。
我有两种看法:
检查远程文件内容类型的基本方法:
$Headers = get_headers('http://url.to.external.file.ext');
if($Headers[8] == 'text/html') {
echo 'Wrong content type.';
exit;
}
答案 1 :(得分:2)
这个问题只有两个解决方案。可以从您的网络服务器下载图像并提供服务,也可以只允许图像的网址模式的白名单。
如果您决定下载图片,可能会有一些问题 -