安全的PHP文件上传脚本

时间:2011-02-09 20:55:42

标签: php forms file upload storage

我想这两次问过这个问题,但这是我第一次接近这个问题。我打算允许用户上传和下载他们的文件(.pdf,.doc,.exl,.ppt,.png,.jpg,.gif)。

这些提示是否足够:

http://blogs.sans.org/appsecstreetfighter/2009/12/28/8-basic-rules-to-implement-secure-file-uploads/

另外,是否有我可以使用的脚本,我是php的新手。

3 个答案:

答案 0 :(得分:25)

迟到的回复,但我认为您的脚本应基于此: http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

它涵盖了安全性的所有方面,并解释了所有有效点。我希望这会有所帮助。

编辑:以上链接已失效,here is a cached version of that article

答案 1 :(得分:8)

对于未来的读者,他们也是php的新手:

在阅读Ricki在https://stackoverflow.com/a/7065880/1815624的回答中提到的指南之前,提到了一个很好的指南并且是一个推荐读物,我建议先阅读这个答案:

https://security.stackexchange.com/a/32853/31943

然后阅读Ricki提到的指南:

http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

如果您需要进一步的安全性,那么您应该考虑断开与互联网的连接。 :P

答案 2 :(得分:3)

有一百万个文件上传脚本。 This one并不比其他人差。

虽然上传png以外的文件的“保护”不起作用(它只检查文件的名称)。

上传文件非常安全 - 它让其他人有机会下载它们,从而打开服务器进行某些类型的攻击。您引用的文章没有提到两个重点:

  • 永远不会提供与您的网页相同的域中的任何用户提供的文件。有一个单独的域下载。这种方式即使有人设法上传Flash动画或HTML片段,您的域也不会受到跨域攻击(例如,如果您的应用程序具有example.org域名,则应该提供用户内容,例如下载。 example.com);
  • 始终使用控制良好的标题提供上传的文件。