停止PHP读/写其他PHP文件的能力

我托pipe一个非常小的托pipe网站,托pipe一种聊天软件。 我给每个用户一个/ home / jailed ftp,但他们有他们自己的www文件夹,他们可以上传的东西。

我的一个用户上传了这个PHP文件: http : //pastebin.com/YAJW8weh – 这似乎能够保存PHP文件,并允许他下载它们。

使用这个,我认为他能够访问我的一些文件,我的一个php文件在php中有我的MySQL密码,然后他利用我所有的客户端密码访问了一个数据库。

我怎样才能阻止这种情况再次发生? 在给用户自己的/ home /目录时应该采取什么预防措施。

你想要禁用主文件夹的PHP。

当使用PHP作为Apache模块时(在Ubuntu 10.04上默认),将以下内容添加到Apacheconfiguration中

<Directory /home> php_admin_value engine Off </Directory> 

您应该也可能使用Options -ExecCGIAllowOverride None ,以确保安全。 请参阅Apache官方安全提示 。 如果您的networking服务器启用了其他types的脚本(如mod_perl ),请务必将其禁用到主文件夹。

你必须保护你的网站,Linux / Unix做得很好,为你的网站的根目录下的组和其他人设置最小的权限:

 chmod 0711 /var/virtualhosts/example.com # ls -ald /var/virtualhosts/example.com drwx--x--x 4 example example 4096 Oct 9 08:43 example.com 

使用open_basedir限制对PHP文件的访问:

 # virtual host config php_admin_value open_basedir "/var/virtualhosts/example.com:/tmp" # directory config <Directory /home/bad_user> php_admin_value open_basedir "/home/bad_user:/tmp" </Directory> 

从PHP中禁用危险的function:

 # /etc/php.ini disable_functions = "dl,shell_exec,passthru,exec, popen,system,proc_terminate,proc_close,stream_socket_server" 

使用su – 用户来testing他们在您的网站上的权限。

 su - apache -s /bin/bash cd /var/virtualhosts/example.com ls -al cat /var/virtualhosts/example.com/db.config.php 

suPHP在这里真的是你最好的select。 您可以设置每个用户以自己的用户身份运行他们的脚本,然后chmod他们的目录,以便其他用户不能读取它们。 不要依赖open_basedir,它不会100%工作。

既然你允许上传,你总是不得不担心人们上传他们不应该的东西。 我会build议运行像Linux恶意软件检测。 当shell和DoS脚本等事情上传到您的服务器时,它会提醒您。