我正在为我的网站制作一项功能,以便用户可以上传文件(任何类型)。 为了保护上传表格,我制作了一份不接受的文件类型的黑名单。但为了确保对我的服务器的保护(在以任何方式上传恶意脚本的情况下)我想 tar上传的文件(使用tar类),以便它们存储为.tar压缩文件。 因此,如果用户想要下载它,那么他将收到一个.tar文件。
我的问题是,这足够安全吗? (因为那时无法执行文件)。
[我有这个预约,因为我可以看到tar类的代码,“fread()”]
谢谢!
答案 0 :(得分:2)
两点,在这里:
DocumentRoot
以外的目录,而不是Apache 。
当然,请确保发送文件内容的PHP脚本不允许任何人下载服务器上的任何可能文件...
答案 1 :(得分:0)
您可以将文件上传到非Web访问位置(在您的webroot下),然后使用下载脚本下载文件。
答案 2 :(得分:0)
在我看来,处理上传文件的最佳方法是将它们放在一个无法通过HTTP访问的文件夹中。然后,当请求文件时,使用PHP文件发送然后下载标题,使用readfile()
将文件发送给用户。这样,文件永远不会被执行。
答案 3 :(得分:0)
这可能有用,假设您是下载文件的用户可以解压缩它们(大多数非UNIX系统只有zip,我可以选择下载这两种格式)。
另外,我认为最好创建一个允许文件列表与禁止文件。很容易忘记禁止特定类型;而您可能会更好地了解用户可以上传的内容
不要阻止/允许扩展名上的文件。确保使用服务器将文件标识为的mime类型。这样他们很难伪造它。
另外,将文件存储在非Web可访问目录中并通过脚本下载。
即使它是一个糟糕的文件,如果他们无法直接访问它,他们将无法利用它。
保存文件时,请确保使用以下功能: http://php.net/manual/en/function.is-uploaded-file.php http://php.net/manual/en/function.move-uploaded-file.php
丹