图片上传目录安全性

时间:2013-10-04 13:03:04

标签: php security image-uploading image-upload

我有一个php脚本,可以将图像上传到服务器中的目录。但我看到一些评论提到,出于安全考虑,不应将图像上传到根目录。如果我上传到我目前上传到的目录,我不确定可能出现的安全漏洞。这是存储图像的路径。的htdocs /图像/ filenames.jpg。A screenshot of my directory is shown so that it would be clear

请以安全的方式告诉我在哪里存储图像。

1 个答案:

答案 0 :(得分:1)

关于图像上传的安全性有很多主题,但首先是目录644应该做的权限。接下来你需要注意名称,正如评论中建议的那样,时间戳是相当不错的方法,但它必须与一些随机生成的值组合(或使用时间戳包括毫秒),但是如果你需要给出图像有意义的名称,你必须清理用户提供的名称,过滤掉空字节,目录遍历和其他危险字符(我会白名单并限制图像名称的长度,或随机生成一个字符串)。

我不想将图像放在Web根目录之外,而是使用.htaccess并在其中添加选项php_flag engine off,以关闭目录中的任何php执行。将图像放在Web根目录之外会使它们直接无法访问,因此您无法在<img>标记中使用它们,除非您使用PHP脚本来提供图像(这是一种相当安全的方法) ,如果正确实施的话。)

最后,您要检查是否正在上传有效图片,通常会使用GD库,特别是getimagesize,只有在上传了有效图片时才会返回图片尺寸。

另请查看此topic图片上传的安全性。