0

我有一个将图像上传到服务器目录的 php 脚本。但是我看到一些评论提到出于安全考虑,不应将图像上传到根目录。如果我上传到我当前上传到的目录,我不确定可能出现的安全漏洞。这是存储图像的路径。htdocs/图像/文件名.jpg。显示了我的目录的屏幕截图,以便清楚

请建议我以安全的方式存储图像的位置。

4

1 回答 1

2

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

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

最后,您要检查是否正在上传有效图像,通常使用GD库,特别是getimagesize,仅当上传有效图像时才会返回图像大小。

另请检查有关图像上传安全性的此主题。

于 2013-10-05T01:11:26.553 回答