PHP系統的安全配置初級

jopen 8年前發布 | 8K 次閱讀 PHP開發

PHP有很多的配置參數,可以直接訪問系統和操作目錄的。
比如system命令(該命令可以讓php直接訪問Linux系統,做一些登錄后的操作)在默認的php-fpm程序里,是默認關掉了的。
1.php-fpm的php.ini查看(默認的php目錄)
切換到/usr/local/php/etc  目錄下面,可以看到php的基本配置在該目錄下
如果沒有找到  可以用命令查找語句
find /usr/local/php  -name php.ini
會將對應的位置列出來
2.關閉掉正在運行的php-fpm(主要作用是重啟php-fpm,解決一些崩潰BUG)
 killall  php-fpm(關閉掉所有叫php-fpm的運行進程)
 如果要重新開始運行
 /usr/local/php/sbin/php-fpm(超級管理員命令)
 3.為了防止對面查看php版本
 expose_php=on (開啟這個后,攻擊者將無法查看php的版本信息)
 3.開啟后  可以直接調用system(和system類似的包括exec命令,一個輸出命令運行的結果,一個不輸出運行的結果)
 system("pwd");  
 直接調用了Linux的pwd命令。
 該命令默認情況是被禁止掉了的,在php.ini的
 disable_functions = 后面可以填寫一大串的禁止使用函數,(多個禁用函數的時候,需要用逗號分割)比如
 禁止掉phpinfo() 函數,這樣系統就無法查看phpinfo()的信息了。
 如果要用系統的命令,需要開放system命令(該命令不安全,但是在恰當的場合使用卻能大幅度提升效率)
4.開啟了一些不安全的指令,需要用一些配置來限制其訪問目錄權限
open_basedir= .:/home/www/
open_basedir 限定當前用戶的訪問目錄 .代表當前目錄 /home/www代表允許訪問的所有目錄  超過限定目錄后,會直接報錯
5.在正式的運行環境上,需要對php.ini的一些東西進行新配置(生效的作用范圍僅僅是當前php腳本)
關閉錯誤顯示  
error_reporting(E_ALL);
ini_set( 'display_errors', 'On' );

error_reporting(0);
ini_set( 'display_errors', 'Off' );
6.當開啟了safe_mode的時候 ini_set 也是沒有用的
      ini_set('post_max_size','10M');
      ini_set('upload_max_filesize','8M');//文件上傳最大  
需要在.htaccess進行配置(要求設置是 AllowOverride All)
php_value upload_max_filesize 8M   
php_value post_max_size 10M
PS:在大型項目部署中,所有環境都是統一的,一般都是開啟安全模式,這個時候是不允許單獨改變php的某個配置參數(PHP的配置是運維部確定了配置,不允許程序員擅自改動運行環境,只能通過自己內部完成)要完成該功能就需要.htaccess 進行配置


來自: http://my.oschina.net/xiongyuanliang/blog/601772

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!