Apache上传和安全

最近已经成为一个问题,我们的一个系统上的用户需要能够让apache用户对他们的站点具有读写能力,以使他们站点的上传部分正常工作。 你将如何最小化恶意攻击和提交文件的风险,最终能够删除Web目录中的文件,或者更糟的是接pipeApache守护进程?

我所能想出的唯一解决scheme是为apache可以读取和写入的站点创build一个子文件夹,但只能读取父目录。 使用健全性检查(如file foo.zip )和对未压缩的上传数据进行文件检查,然后将文件重命名并将元数据添加到文件中,以便在移动到文件夹之前对其进行内部跟踪不能由Apache写入,只能读取。

还是我只是偏执?

你的偏执是有效的。

在Apache中上传文件所带来的安全问题是基于上传的.htaccess文件,该文件可以改变权限或者让用户访问Apacheconfiguration文件。

这个问题的大部分预防措施可以通过首先正确保护Apache及其configuration文件来解决。 确保Apache运行在一个完全不同的目录(我使用不同的硬盘驱动器以防万一)比公共文件。 然后确保目录:

  • 这个问题提供了一些洞察到允许上传的权限: https : //stackoverflow.com/questions/10990/what-are-the-proper-permissions-for-an-upload-folder-with-php-apache
  • 本文提供了一些远程file upload攻击的见解: http : //www.linuxforu.com/how-to/security/securing-apache%E2%80%94part-9/
  • 我也build议只允许使用REGEX检查来上传某些文件,例如: http : //www.webdeveloper.com/forum/showthread.php? t=183015

如果你使用PHP编程,我还会做一些额外的检查,以确保脚本不能从上传文件夹中运行。 基本上,禁止PHP(或其他模块)在该文件夹内访问时执行。

Googlebuild议您查看更多资源。 我希望这有帮助。

你还没有说这是什么操作系统 – 这与安全性有很大关系。 假设它的linux / BSD / Unix …

你一定要保持文件根目录之外的可写位置 – 所有的访问应该由你自己的代码来调解。

你可能想把它保存在一个独立的文件系统上,用noexec挂载。

通过健全性检查(如文件foo.zip)和对未压缩的上传数据进行文件检查

从来没有听说过拉链炸弹呢?