正确的目录权限,以执行file_put_contents()

时间:2017-03-25 17:52:35

标签: php apache permissions file-put-contents

我正在一个允许用户将图像上传到服务器的网站上工作。为了使file_put_contents()获得正确的权限,我必须将服务器上的用户更改为www-data(Apache服务器的当前用户)。

我只是想知道这可能造成什么样的安全问题,任何有更多经验的人都可以提供更深入的解释或任何更安全的替代方案?

1 个答案:

答案 0 :(得分:0)

  1. 上传到www以上的其他目录。如果攻击者会上传任何内容 可执行的,而不是他们可以执行它......如果他们执行,他们可以做任何事情。

  2. 将上传的文件名更改为其他名称。不要以用户提供的名称保存文件。

  3. 将文件权限更改为只读。

  4. 检查文件mime类型,而不是$ _FILES [' DFJK'] [' type'] ...使用此方法检查mime类型

    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime = finfo_file($finfo, $_FILES['soup']['tmp_name']);
    

    因为

    $_FILES['filename']['type'] 
    

    可以由用户更改。

  5. 还会检查文件大小,因为它们会上传非常大的内容。然后你的服务器转到拒绝服务模式。

  6. 您也可以使用htaccess来停止对目录的可执行权限。

    RemoveHandler .php .phtml .php3
    RemoveType .php .phtml .php3   
    

    php_flag engine off