2

我正在阅读有关 PHP 的安全性内容,我现在最关心的是用户文件上传表单。我读过很多,一些用户可能会通过更改扩展名甚至操纵标题和 mimetype 来上传似乎是其他东西的文件。我明白这一点。

但我的问题是,如果我重命名任何上传的文件并将其移动到他们不知道的目录,这将是一个问题。

请让我知道这是否足够,如果不够,请给我一些标题,说明我应该执行哪些额外的安全检查

非常感谢

4

3 回答 3

0

您可能会在后台运行防病毒扫描守护程序,例如配置的 avscand。用于扫描受感染文件并将其移动到隔离目录。这应该可以防止以后将受感染的文件传回给人们。配置自动病毒库更新。回过头来,我确实做过这样的事情,所以调查一下。

将文件名简单地重命名为带有安全字符的名称就足够了;每个用户当然分开。

于 2013-08-28T19:33:50.333 回答
0

To have a more secure site the following needs to happen:

  • Due to the nature of security, this list will need be updated every so often.
  • Set the upload_max_filesize to something sensible
  • Install an Antivirus on the server
  • Set the upload_tmp_dir to something sensible, that the user may not access. See Setting PHP tmp dir - PHP upload not working
  • Have your form you upload files (which you already have done)
  • Your form handler should:
    • Run a file command to get the type of the data without executing it
    • Reject random files
    • The PHP interpreter will validate the file size
    • Run the virus scanner on the file
    • Do a file rename to ensure the filename is clean (if you need to reference things, it is convenient to rename the file to the primary key of your attachments table)
    • Move the file to a location that isn't accessible by the client (but move it, so if a later upload comes in with the same name nothing happens)
    • When you move the files, ensure they don't have execute permissions
于 2013-08-29T03:43:52.830 回答
0

这实际上取决于您的在线应用程序想要实现的目标。如果您希望直接限制访问已上传的文件,则应为上传区域的父文件夹设置文件夹权限以阻止用户访问。然后在您的数据库中,您可以记录到路径并仅通过 http 响应托管文件。这将确保不会访问任何可能有害的文件,并且用户仍然可以上传他们的感受。作为一个额外的步骤,您可以在托管每个文件时为其添加错误的文件扩展名,然后在提供该文件时将其删除。

于 2013-08-28T19:26:54.547 回答