PHP安全配置

來源:互聯網
上載者:User
PHP是非常強大的伺服器端指令碼語言,但是強大的功能總是伴隨著重大的危險,PHP本身老版本有一些問題,比如在 php4.3.10和php5.0.3以前有一些比較嚴重的bug,所以推薦使用新版。另外,目前鬧的轟轟烈烈的SQL Injection也是在PHP上有很多利用方式,所以要保證安全,PHP代碼編寫是一方面,PHP的配置更是非常關鍵。在這節裡,你將學習修改 PHP.ini檔案來阻止一些PHP潛在的危險因素 。
一、 php.ini檔案的選擇
  設定有效 PHP 設定檔,php.ini。壓縮包中包括兩個 ini 檔案,php.ini-dist 和 php.ini-recommended。建議使用 php.ini-recommended,因為此檔案對預設設定作了效能和安全上的最佳化。仔細閱讀此檔案中的說明並研究 ini 設定 一章來親自人工設定每個項目。如果要達到最佳的安全效果,則最好用這個檔案,儘管 PHP 在預設的 ini 檔案下也工作的很好。將選擇的 ini 檔案拷貝到 PHP 能夠找到的目錄下並改名為 php.ini。PHP 預設在 Windows 目錄下搜尋 php.ini:
  在 Windows 9x/ME/XP 下將選擇的 ini 檔案拷貝到 %WINDIR%,通常為 c:\windows。
  在 Windows NT/2000 下將選擇的 ini 檔案拷貝到 %WINDIR% 或 %SYSTEMROOT% 下,通常為 c:\winnt 或 c:\winnt40 對應於伺服器版本。
  如果在 Windows NT,2000 或 XP 中使用了 NTFS,確保運行 webserver 的使用者名稱對 php.ini 有讀取的許可權(例如使其對 Everyone 可讀)。
  php.ini -dist 一般用於程式開發。
  php.ini -recommended 用於線上服務使用。
二、 php.ini檔案的修改
  php的安全模式是個非常重要的內嵌的安全機制,能夠控制一些php中的函數,比如system(),同時把很多檔案操作函數進行了許可權控制,也不允許對某些關鍵檔案的檔案,比如/etc/passwd,但是預設的php.ini是沒有開啟安全模式的,我們把它開啟。
  1、找到"safe_mode=off"改為"safe_mode=on"
   象一些能執行系統命令的函數shell_exec()和``被禁止,其它的一些執行函數如:exec(), system(), passthru(),popen()將被限制只能執行safe_mode_exec_dir指定目錄下的程式。如果你實在是要執行一些命令或程式,找到 以下:
  safe_mode_exec_dir =
  指定要執行的程式的路徑,如:
  safe_mode_exec_dir = c:\wwwroot
  然後把要用的程式拷到c:\wwwroot目錄下,這樣,象上面的被限制的函數還能執行該目錄裡的程式
  2、找到"display_errors=on"改為"display_errors=off"
  一般php在沒有串連到資料庫或者其他情況下會有提示錯誤,一般錯誤資訊中會包含php指令碼當前的路徑資訊或者查詢的SQL語句等資訊,這類資訊提供給駭客後,是不安全的,所以一般伺服器建議禁止錯誤提示 。
  display_errors = Off
  log_errors = On
  同時也要設定錯誤記錄檔存放的目錄 找到下面這行
  ;error_log = filename
  去掉前面的;注釋,把filename改為指定檔案
  error_log = D:/usr/php_error.log
  3、找到"disable_functions="改為:"disable_functions=phpinfo,system,exec,passthru,shell_exec,popen,is_dir".
  我們覺得不希望執行包括system()等在內的能夠執行命令的php函數,或者能夠查看php資訊的phpinfo()等函數,那麼我們就可以禁止它們:
  4、尋找:magic_quotes_gpc 如果是Off的話改成On
  開啟magic_quotes_gpc來防止SQL注入。
  5、尋找:register_globals
  在PHP中提交的變數,包括使用POST或者GET提交的變數,都將自動註冊為全域變數,能夠直接存取,這是對伺服器非常不安全的,所以我們不能讓它註冊為全域變數,就把註冊全域變數選項關閉:
  6、尋找:open_basedir 後面增加 /www/ /*說明:www為網站程式所放檔案*/
  這個選項可以禁止指定目錄之外的檔案操作,還能有效地消除本地檔案或者是遠程檔案被include()等函數的調用攻擊。
  7、expose_php設為off ,這樣php不會在http檔案頭中泄露資訊。
  我們為了防止駭客擷取伺服器中php版本的資訊,可以關閉該資訊斜路在http頭中 。
  8、設定“allow_url_fopen”為“off” 這個選項可以禁止遠程檔案功能 。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.