首頁  >  文章  >  後端開發  >  PHP環境如何進一步加強安全防範? php環境安全加強的方法介紹

PHP環境如何進一步加強安全防範? php環境安全加強的方法介紹

不言
不言原創
2018-08-14 17:11:471367瀏覽

這篇文章帶給大家的內容是關於PHP環境如何進一步加強安全防範? php環境安全加強的方法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

PHP應用部署後,開發者或維運人員應該隨時注意PHP方面的漏洞訊息,升級PHP版本,對PHP環境進行安全加固。本文將為大家介紹如何從WEB安全方面讓你的網站更堅固更安全。

1.啟用PHP 的安全模式

PHP 環境提供的安全模式是一個非常重要的內嵌安全機制,PHP 安全模式能有效控制一些PHP 環境中的函數(例如system ()函數),對大部分的檔案操作函數進行權限控制,同時不允許對某些關鍵檔案進行修改(例如/etc/passwd)。但是,預設的 php.ini 設定檔並沒有啟用安全模式。

您可以透過修改php.ini 設定檔啟用PHP 安全模式:

safe_mode = on

2.使用者群組安全性

當您啟用安全模式後,如果safe_mode_gid選項被關閉,PHP 腳本能夠對文件進行訪問,且相同用戶組的用戶也能夠對該文件進行訪問。

因此,建議您將該選項設為關閉狀態:

safe_mode_gid = off

注意: 此選項參數僅適用於 Linux 作業系統。

如果不進行該設置,您可能無法對伺服器網站目錄下的檔案進行操作。

3.安全模式下執行程式主目錄

如果啟用了安全模式後,想要執行某些程式的時候,可以指定需要執行程式的主目錄,例如:

safe_mode_exec_dir = /usr/bin

一般情況下,如果不需要執行什麼程序,建議您不要指定執行系統程序的目錄。您可以指定一個目錄,然後把需要執行的程式拷貝到這個目錄即可,例如:

safe_mode_exec_dir = /temp/cmd

但是,更推薦您不要執行任何程式。在這種情況下,只需要將執行目錄指向網頁目錄即可:

safe_mode_exec_dir = /usr/www

注意:執行目錄的路徑以您實際作業系統目錄路徑為準。

4.安全模式下包含文件

如果您需要在安全模式下包含某些公共文件,您只需要修改以下選項:

safe_mode_include_dir = /usr/www/include/

一般情況下,PHP 腳本中包含的檔案都是在程式已經寫好的,可以根據您的特定需求進行設定。

5.控制PHP 腳本能存取的目錄

使用open_basedir選項能夠控制PHP 腳本只能存取指定的目錄,這樣能夠避免PHP 腳本存取不應該存取的文件,一定程度下降低了phpshell 的危害。一般情況下,可以設定為只能存取網站目錄:

open_basedir = /usr/www

6.關閉危險函數

#如果您啟用了安全模式,那麼可以不需要設定函數禁止,但為了安全考慮,還是建議您進行相關設定。例如,您不希望執行包括system()等在內的執行命令的PHP 函數,以及能夠查看PHP 資訊的phpinfo()等函數,那麼您可以透過下列設定禁止這些函數:

disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl

如果您想要禁止任何文件和目錄的操作,那麼您可以關閉以下文件相關操作。

disable_functions = chdir, chroot, dir, getcwd, opendir, readdir, scandir, fopen, unlink, delete, copy, mkdir, rmdir, rename, file, file_get_contents, fputs, fwrite, chgrp,chmod, chown

注意: 以上設定只列舉了部分比較常用的檔案處理函數,您也可以將上面的執行指令函數和這些檔案處理函數結合,就能給抵制大部分的phpshell 威脅。

7.關閉PHP 版本資訊在HTTP 頭中的洩露

為了防止駭客獲取伺服器中PHP 版本的信息,您可以禁止該資訊在HTTP 頭部內容中洩露:

expose_php = off

這樣設定之後,駭客在執行telnet 9e6c6f86673efa96e9f4645ec38e5f75 80嘗試連接您的伺服器的時候,將無法看到PHP 的版本資訊。

8.關閉註冊全域變數

在 PHP 環境中提交的變量,包括使用 POST 或 GET 指令提交的變量,都將自動註冊為全域變量,能夠直接存取。這對您的伺服器是非常不安全的,因此建議您將註冊全域變數的選項關閉,禁止將所提交的變數註冊為全域變數。

register_globals = off

注意: 此選項參數已在 PHP 5.3 以後的版本中移除。

當然,如果這樣設定之後,取得對應變數的時候就需要採取合理方式。例如,取得 GET 指令提交的變數 var,就需要使用$_GET['var']指令來進行取得,在進行 PHP 程式設計時需要注意。

9.SQL 注入防護

SQL 注入是一個非常危險的問題,小則造成網站後台被入侵,重則導致整個伺服器淪陷。

magic_quotes_gpc選項預設是關閉的。如果開啟該選項,PHP 將自動將使用者提交對SQL 查詢的請求進行轉換(例如,將' 轉換為\' 等),這對於防止SQL 注入攻擊有很大作用,因此建議您將該選項設為:

magic_quotes_gpc = on

注意: 此選項參數已在PHP 5.4.0 以後的版本中移除。

所以最好使用PDO預處理方式處理SQL查詢。

10.错误信息控制

一般 PHP 环境在没有连接到数据库或者其他情况下会有错误提示信息,错误信息中可能包含 PHP 脚本当前的路径信息或者查询的 SQL 语句等信息,这类信息如果暴露给黑客是不安全的,因此建议您禁止该错误提示:

display_errors = Off

如果您确实要显示错误信息,一定要设置显示错误信息的级别。例如,只显示警告以上的错误信息:

error_reporting = E_WARNING & E_ERROR

注意: 强烈建议您关闭错误提示信息。

11.错误日志

建议您在关闭错误提示信息后,对于错误信息进行记录,便于排查服务器运行异常的原因:

log_errors = On

同时,需要设置错误日志存放的目录,建议您将 PHP 错误日志与 Apache 的日志存放在同一目录下:

error_log = /usr/local/apache2/logs/php_error.log

注意: 该文件必须设置允许 Apache 用户或用户组具有写的权限。

相关推荐:

PHP中的session安全吗?,PHPsession安全

安全防范措施 PHP安全防范技巧分享

PHP网站常见安全漏洞及相应防范措施总结,安全漏洞防范措施

以上是PHP環境如何進一步加強安全防範? php環境安全加強的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn