网站上传可防止黑客攻击

时间:2017-02-18 10:16:41

标签: php security upload

我的网站上有一个上传表格。我实际上并没有真正包含或排除文件类型。

相反,我使用它:

$fileUploadName = $target_dir.md5(uniqid($target_file.rand(),true)).".".$imageFileType;

这将保留文件类型,但将文件名更改为一些随机隐藏的内容,例如790cd5a974bf570ff6a303c3dc5be90f

通过这种方式,黑客无法上传hack.php文件,并使用www.example.com/uploaded_files/hack.php将其打开,因为它已更改为790cd5a974bf570ff6a303c3dc5be90f.php。在我看来,这种方式完全安全。我是对的,这样安全吗?

我认为只有一个自执行文件可能是个问题。自执行文件是否存在?

2 个答案:

答案 0 :(得分:0)

您还应该检查上传文件的mime类型和扩展名(尽管上传时很容易伪造)。 如果您只想要图像,还可以通过执行如下脚本来检查图像宽度和长度参数:

$size = getimagesize($target_file);

如果这不返回正确的值,则表示没有图像文件。

您可能想要了解像Gifar这样的危险图片。

答案 1 :(得分:0)

将上传的文件放在自己的文件夹中,例如/etc/web/uploads/<Random>(../uploads),而网站根目录为/etc/web/public/,或者如果您可以使用.htaccess在uploads文件夹中创建一个放Deny from all 此外,uniqid和rand不会生成加密安全值我还会检查上传的文件是否仍为图片Link to someones isimage function http://php.net/manual/en/function.uniqid.php http://php.net/manual/en/function.rand.php

使用file_get_contents获取用户图片