我正在一个允许用户将图像上传到服务器的网站上工作。为了file_put_contents()
获得正确的权限,我不得不将服务器上的用户更改为www-data
(Apache 服务器的当前用户)。
我只是想知道这可能会产生哪些可能的安全问题,任何有更多经验的人能够提供更深入的解释或任何更安全的替代方案?
我正在一个允许用户将图像上传到服务器的网站上工作。为了file_put_contents()
获得正确的权限,我不得不将服务器上的用户更改为www-data
(Apache 服务器的当前用户)。
我只是想知道这可能会产生哪些可能的安全问题,任何有更多经验的人能够提供更深入的解释或任何更安全的替代方案?
上传到 www 上面的不同目录。如果攻击者上传任何可执行文件而不是他们无法执行它......如果他们执行他们可以做任何事情。
将上传的文件名更改为其他名称。不要以用户提供的名称保存文件。
将文件权限更改为只读。
不使用 $_FILES['DFJK']['type'] 检查文件 mime 类型 ...使用它来检查 mime 类型
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['soup']['tmp_name']);
因为
$_FILES['filename']['type']
可由用户更改。
还要检查文件大小,因为他们会上传非常大的大小。然后你的服务器进入拒绝服务模式。
您也可以htaccess
用来停止对目录的可执行权限。
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
还
php_flag engine off