我曾参与许多网络应用,允许用户上传和显示图片(如个人资料图片,背景图片等)。我遇到的一个问题是你通常提供用户可以使用的特定格式(即jpg,png,jpeg,gif等)。
问题是,假设你有个人资料图片,有些人可能会上传一个jpeg,一些png和一些gif。你应该以什么格式保存文件?即' profile.jpeg ',' profile.png '或只是'个人资料'。
我注意到您可以直接排除文件扩展名,浏览器会打开图片,但这样安全吗?
答案 0 :(得分:0)
文件扩展名不确定文件格式。您可以上传以.png结尾的.gif文件,浏览器会毫无困难地显示它。 (您也可以使用.exe或.foo等等,图像仍会显示。)
换句话说,扩展名与安全性无关。
另一方面,我不知道将未知文件传递给浏览器以显示为图像时存在任何安全风险。如果您有<img src="virus.exe">
,则浏览器将不执行任何操作,因为该文件不是有效的图像文件。
如果您想确定,可以在服务器上检查上传的文件是否为有效图像,如果不是则丢弃。