Linux
停止 PHP 讀取/寫入其他 PHP 文件的能力
我託管了一個非常小的託管站點,其中託管了一種聊天軟體。我給每個使用者一個 /home/ jailed ftp,但他們有自己的 www 文件夾,可以上傳東西。
我的一個使用者上傳了這個 php 文件: http: //pastebin.com/YAJW8weh - 它似乎能夠保存 php 文件並允許他下載它們。
使用這個我認為他能夠訪問我的一些文件,並且我的一個 php 文件在 php 中有我的 MySQL 密碼,然後他可以使用我所有的客戶密碼訪問數據庫。
我怎樣才能阻止這種情況再次發生?在給使用者自己的 /home/ 目錄時我應該採取什麼預防措施。
您想禁用主文件夾的 php。
當使用 PHP 作為 Apache 模組(Ubuntu 10.04 上的預設值)時,將以下內容添加到您的 Apache 配置中
<Directory /home> php_admin_value engine Off </Directory>
為了安全起見,您可能還應該使用
Options -ExecCGI
andAllowOverride None
there 。請參閱官方 Apache安全提示。如果您的網路伺服器啟用了其他類型的腳本(如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 中的危險函式:
# /etc/php.ini disable_functions = "dl,shell_exec,passthru,exec, popen,system,proc_terminate,proc_close,stream_socket_server"
使用su - user測試他們在您的網站上擁有的權限。
su - apache -s /bin/bash cd /var/virtualhosts/example.com ls -al cat /var/virtualhosts/example.com/db.config.php