標籤:開發人員 擷取 網站 com 應用程式 ora sql web技術 tac
很明顯,PHP+Mysql+Apache是很流行的web技術,這個組合功能強大,可擴充性強,還是免費的。然而,PHP的預設設定對已經上線的網站不是那麼適合。下面通過修改預設的設定檔加強PHP的安全性原則!
0x01:禁用遠程url檔案處理功能
像fopen的檔案處理函數,接受檔案的rul參數(例如:fopen(‘http://www.yoursite.com‘,‘r‘)).),這個功能可以很輕鬆的訪問遠端資源,然而,這是一個很重要的安全威脅,禁用這個功能來限制file function是個不錯的選擇,在php.ini檔案中做如下修改:
複製代碼 代碼如下:
allow_url_fopen = Off
0x02:禁用註冊全域變數
php在4.2.0以前的版本中,用全域變數作為輸入,這個功能叫做register_globals,在web應用中它引起了很多安全問題,因為它允許攻擊者在一些情況下很容易的操作全域變數,幸運的是在4.2.0這個功能預設被禁用,它非常的危險,無論在什麼情況下都要禁用這個功能。如果某些指令碼需要這個功能,那麼這個指令碼就存在潛在的安全威脅。修改pnp.ini來禁用這個功能:
複製代碼 代碼如下:
register_globals = Off
0x03:限制php的讀寫操作
在很多web開發的過程中,php指令碼需要向本地檔案系統進行讀寫操作,比如/var/www/htdocs/files,為了加強安全,你可以修改本地檔案的讀寫權限:
複製代碼 代碼如下:
open_basedir = /var/www/htdocs/files
0x04:Posing Limit
限制PHP的執行時間、記憶體使用量量、post和upload的資料是最好的策略,可以做如下的配置:
複製代碼 代碼如下:
max_execution_time = 30 ; Max script execution time
max_input_time = 60 ; Max time spent parsing input
memory_limit = 16M ; Max memory used by one script
upload_max_filesize = 2M ; Max upload file size
post_max_size = 8M ; Max post size
0x05:禁用錯誤訊息和啟用日誌功能
在預設設定中,php會向瀏覽器輸出錯誤訊息,在應用程式的開發過程中,這個預設設定是最合理的配置,然而,它也可以向使用者泄漏一些安全資訊,例如安裝路徑和使用者名稱。在已經開發完成的網站中,最好禁用錯誤訊息然後把錯誤訊息輸出到記錄檔中。
複製代碼 代碼如下:
display_errors = Off
log_errors = On
0x06:隱藏PHP檔案
如果沒有隱藏PHP檔案,我們可以通過多種方法擷取伺服器PHP的版本,例如使用:http://www.example.com/script.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
顯然,我們不希望使用者可以直接擷取你網站伺服器的PHP版本,幸運的是,在php.ini中有個開關可以禁用這個功能:
複製代碼 代碼如下:
expose_php = Off
0x07:安全模式配置
在預設的情況下,php可以配置為安全模式,在這種模式下,Apache禁止訪問檔案、環境變數和二進位程式,在安全模式下,存在的最大問題就是只有檔案的所有者才能訪問這寫PHP檔案,如果有很多開發人員共同開發這個程式,這樣的設定就不切實際,當你需要訪問一個PHP檔案時就需要修改這個檔案的所有者,另外一個問題就是其它程式也不能訪問這些PHP檔案,下面的配置就可以修改檔案的的許可權為使用者組而不是單個使用者。
複製代碼 代碼如下:
safe_mode = Off
safe_mode_gid = On
通過啟用safe_mode_gid,能夠使用Apache的這個群組就能夠訪問PHP檔案。安全模式對阻止二進位檔案的執行也非常有效,然而,開發人員卻希望在某些特定情形下能夠運行一些二進位檔案。在這些特殊的情形下,可以將二進位檔案放進一個目錄中,比如(/var/www/binaries),可以做如下設定:
複製代碼 代碼如下:
safe_mode_exec_dir = /var/www/binaries
最後,通過下面的設定,可以訪問伺服器的環境變數,提供一個以”_“分割的首碼,這樣只能訪問具有規定首碼的環境變數:
複製代碼 代碼如下:
safe_mode_allowed_env_vars = PHP_
0x08:限制公用使用者對具有特定尾碼名的檔案的訪問
由於安全的原因,很多具有特定尾碼名的檔案不能被公用使用者所訪問,比如.inc尾碼的檔案,裡麵包含了一些敏感的資訊,比如mysql串連資訊,如果沒有適當的配置,那麼每個使用者都能訪問這個設定檔,為了加強網站的安全,你需要在. .htaccess檔案進行如下的配置:
複製代碼 代碼如下:
<filesmatch>
Order allow,deny
Deny from all
</filesmatch>
0x09:總結
PHP的預設配置是面向開發人員的,如果網站面向廣大的使用者,建議重新設定PHP。
提升PHP安全:8個必須修改的PHP預設配置