运行 Solaris/Apache/PHP。
我们的用户群需要能够将文件上传到 Web 服务器,因此我们必须启用 php 上传。当用户提供不受限制的上传脚本并且攻击者上传他们自己的数据时,问题就出现了。攻击者通常会上传他们想要在 Web 服务器上提供的数据,或者上传另一个 php 脚本,以便他们进一步访问系统。
- 有没有办法可以阻止 PHP 从系统端上传其他 php 脚本(我知道用户可以这样做,但不确定他们会不会这样做)?
- 其他人在处理允许文件上传时采取了哪些常规安全预防措施或最佳实践?我们如何阻止这些脚本被滥用?
我们有成千上万的用户,因此检查每个上传脚本(无论是自定义脚本、wiki 脚本等)是否安全似乎几乎是不可能的。我有一个脚本可以检查 Web 可写目录,并查看这些目录是否有适当的 .htaccess 设置限制,但拥有自己的非基于 .htaccess/.htpasswd 的登录系统的系统(wiki 脚本等)不会使用这些脚本,因此这些脚本在这方面并没有真正的帮助。
答案1
其他人在处理允许文件上传时采取了哪些常规安全预防措施或最佳实践?我们如何阻止这些脚本被滥用?
将上传文件夹与任何应用程序脚本/二进制文件分开托管。设置 Apache,使其不会从上传目录执行任何 cgi/php/etc 代码。理想情况下,将上传数据托管在 webroot 之外的目录中。
由于您托管许多用户,请使用 PHP 服务器/模块,以便每个用户的代码都在他们自己的用户 ID 下运行。
除此之外,你无法真正保护能够向你的服务器发布代码的人。如果他们上传不安全的代码,那么他们就会看到后果。根本不可能 100% 保护。