當前位置:文思屋>社會工作>電腦培訓>

淺析通如何加強php的安全

文思屋 人氣:4.26K

小編語:經過以下的配置,雖然說不上固若金湯,但是也在相當程度上給攻擊者的測試造成很多麻煩,即使php指令碼程式出現比較嚴重的漏洞,攻擊者也無法造成實際性的破壞。

淺析通如何加強php的安全

1、編譯的時候注意補上已知的漏洞

從4.0.5開始,php的mail函式加入了第五個引數,但它沒有好好過濾,使得php 應用程式能突破safe_mode的限制而去執行命令。所以使用4.0.5和4.0.6的時候 在編譯前我們需要修改php原始碼包裡

ext/standard/mail.c檔案,禁止mail函式的第五引數或過濾shell字元。在mail.c

檔案的第152行,也就是下面這行:

if (extra_cmd != NULL) {

後面加上extra_cmd=NULL;或extra_cmd = php_escape_shell_cmd(extra_cmd);

然後編譯php,那麼我們就修補了這個漏洞。

2、修改配置檔案

以php發行版的-dist為藍本進行修改。

1)Error handling and logging

在Error handling and logging部分可以做一些設定。先找到:

display_errors = On

php預設是開啟錯誤資訊顯示的,我們把它改為:

display_errors = Off

關閉錯誤顯示後,php函式執行錯誤的資訊將不會再顯示給使用者,這樣能在一

定程度上防止攻擊者從錯誤資訊得知指令碼的物理位置,以及一些其它有用的 資訊,起碼給攻擊者的黑箱檢測造成一定的障礙 。這些錯誤資訊可能對我們 自己有用,可以讓它寫到指定檔案中去,那麼修改以下:

log_errors = Off

改為:

log_errors = On

以及指定檔案,找到下面這行:

;error_log = filename

去掉前面的;註釋,把filename改為指定檔案,如

/usr/local/apache/logs/php_

error_log = /usr/local/apache/logs/php_

這樣所有的錯誤都會寫到php_檔案裡。

2)Safe Mode

php的safe_mode功能對很多函式進行了限制或禁用了,能在很大程度解決php的

安全問題。在Safe Mode部分找到:

safe_mode = Off

改為:

safe_mode = On

這樣就打開了safe_mode功能。象一些能執行系統命令的函式shell_exec()和`` 被禁止,其它的一些執行函式如:exec(), system(), passthru(), popen() 將被限制只能執行safe_mode_exec_dir指定目錄下的程式。如果你實在是要 執行一些命令或程式,找到以下:

safe_mode_exec_dir =

指定要執行的程式的路徑,如:

safe_mode_exec_dir = /usr/local/php/exec

然後把要用的程式拷到/usr/local/php/exec目錄下,這樣,象上面的被限制

的函式還能執行該目錄裡的程式。

關於安全模式下受限函式的詳細資訊請檢視php主站的說明:

3)disable_functions

如果你對一些函式的危害性不太清楚,而且也沒有使用,索性把這些函式禁

止了。找到下面這行:

disable_functions =

在”=“後面加上要禁止的`函式,多個函式用”,“隔開。

3、修改

如果你只允許你的php指令碼程式在web目錄裡操作,還可以修改檔案限 制php的操作路徑。比如你的web目錄是/usr/local/apache/htdocs,那麼在

里加上這麼幾行:

php_admin_value open_basedir /usr/local/apache/htdocs

這樣,如果指令碼要讀取/usr/local/apache/htdocs以外的檔案將不會被允許,

如果錯誤顯示開啟的話

會提示這樣的錯誤:

Warning: open_basedir restriction in effect. File is in wrong directory in

/usr/local/apache/htdocs/ on line 4

等等。

TAGS:PHP 淺析