保护文档根目录PHP

时间:2017-07-05 12:26:13

标签: php file-upload

在阅读了几篇关于保护文件上传的线程和文章之后,我想检查一下我是否已经充分保护了我的上传内容。请注意,我只有有限的管理员权限,因此很难上传/访问/管理文档根目录之外的文件。

我的上传文件夹位于/html/uploads.

目前,我已完成以下工作:

  • 我从上传文件夹中删除了读取,写入或执行的公共权利

  • 我从上传文件夹中删除了读取,写入或执行的群组权限

  • 我已将accept="image/*,.doc, .docx,.pdf"插入<input/>代码。

  • 我通过

    检查错误,最大尺寸和扩展名
    foreach ($_FILES['files']['name'] as $f => $name) {
    if ($_FILES['files']['error'][$f] == 4) {
        $break = "yes";
        continue; // Skip file if any error found
    }
    

    以及对max-size和extension

  • 的检查
  • 服务器上传的最大文件数量已限制为6
  • 我在上传后重命名文件

既然我已经阅读了很多关于在文档根目录之外保存文件并且没有上传的经验,我不确定这是否足以使页面的上传“安全”。是不是这样,或者在将其保存在文档根目录之外时,是否根本无法使其“安全”?

1 个答案:

答案 0 :(得分:0)

您可以做的最好的事情(如果您不能在文档根目录之外执行任何操作)是将.htaccess文件添加到您的上传文件夹中:

deny from all

这将阻止通过互联网访问任何文件,这基本上与将文件放在文档根目录之外一样好。这样,即使有人发现您的上传验证漏洞,他们也无法直接在线访问这些文件。特别是,这意味着他们无法上传PHP文件并欺骗您的服务器执行它。