Linux十大PHP安全要點

PHP的安全是廣大開發人員擔憂的主要問題。雖然PHP提供從裏到外的可靠安全,可是須要由開發人員正確地落實這些安全機制。咱們在本文中將爲Linux管理員介紹幾個PHP安全要點。這些要點將幫助你確保Web應用程序安全,並確保從長遠來看正常運行。php

在咱們開始以前,有必要了解一下咱們所要處理的系統。出於演示的須要,咱們使用Fedora。然而,這些要點應該適用於Ubuntu版本或其餘任何Linux發行版。查看你操做系統發行版的使用手冊,便可瞭解更多信息。html

不妨仔細看一下咱們系統環境的幾個關鍵文件。你的文件應該相似或對應於下列:linux

默認的Web服務器:Apacheweb

DocumentRoot:/var/www/htmlshell

PHP配置文件:/etc/php.ini瀏覽器

擴展配置目錄:/etc/php.d/安全

安全文件:/etc/php.d/security.ini服務器

這些技巧將保護你的網站,避免不一樣類型的常見攻擊,好比SQL注入、XSS、跨站請求僞造攻擊、eval()和文件上傳等攻擊。可在此(https://www.sitepoint.com/top-10-php-security-vulnerabilities/)查看常見攻擊列表。curl

1. 刪除沒必要要的模塊函數

PHP隨帶內置的PHP模塊。它們對許多任務來講頗有用,可是不是每一個項目都須要它們。只要輸入下面這個命令,就能夠查看可用的PHP模塊:

# php - m

一旦你查看了列表,如今能夠刪除沒必要要的模塊。減小模塊的數量有助於提升你所處理的Web應用程序的性能和安全。

2. 限制PHP信息泄露

平臺泄露關鍵信息司空見慣。好比說,PHP會泄露一些信息,好比版本以及它安裝到服務器上的事實。這能夠經過expose_php命令來實現。爲了防止泄露,你須要在/etc/php.d/security.ini中將該命令設成off。

expose_php=Off

若是你須要瞭解版本及其狀態,只要針對網站地址運行一個簡單的Curl命令就能夠得到該信息。

Curl - I http://www.livecoding.tv/index.php

以前的命令會返回下列信息:

HTTP/1.1 200 OK 
X-Powered-By: PHP/7.0.10  
Content-type: text/html; charset=UTF-8

3. 禁用遠程代碼執行

遠程代碼執行是PHP安全系統方面的常見安全漏洞之一。默認狀況下,遠程代碼執行在你的系統上已被啓用。「allow_url_fopen」命令容許請求(require)、包括(include)或可識別URL的fopen包裝器等函數能夠直接訪問PHP文件。遠程訪問經過使用HTTP或FTP協議來實現,會致使系統無力防護代碼注入安全漏洞。

爲了確保你的系統安全可靠、遠離遠程代碼執行,你能夠將該命令設成「Off」,以下所示:

Allow_url_fopen=Off  
allow_url_include=Off

4. 將PHP錯誤記入日誌

增強Web應用程序安全的另外一個簡單方法就是,不向訪客顯示錯誤。這將確保黑客根本沒法危及網站的安全性。須要在/etc/php.d/security.ini文件裏面進行編輯。

display_errors=Off

如今你可能會想:完成這一步後,「開發人員在沒有錯誤信息的幫助下如何調試?」開發人員可使用log_errors命令來用於調試。他們只須要在security.ini文件中將log_errors命令設成「On」。

log_errors=On  
error_log=/var/log/httpd/php_scripts_error.log

5. 合理控制資源

爲了確保應用程序的安全,控制資源很重要。爲了確保適當的執行和安全,你就要對PHP腳本執行予以限制。此外,還應該對花在解析請求數據上的時間予以限制。若是執行時間受到控制,腳本使用的內存等其餘資源也應該會獲得相應配置。全部這些度量指標可經過編輯security.ini文件來加以管理。

# set in seconds  
max_execution_time = 25  
max_input_time = 25  
memory_limit = 30M

6. 禁用危險的PHP函數

PHP隨帶用於開發的實用函數,可是也有可能被黑客用來闖入Web應用程序的大量函數。禁用這些函數能夠提升整體安全性,並確保你沒有受到危險的PHP函數的影響。

爲此,你先要編輯php.ini文件。一旦進入該文件,找到disable_functions命令,禁用裏面的危險函數。爲此,你只要拷貝/粘貼下列代碼。

disable_functions =exec,passthru,  
shell_exec,system,proc_open,popen,curl_exec,  
curl_multi_exec,parse_ini_file,show_source

你能夠在此(https://www.eukhost.com/blog/webhosting/dangerous-php-functions-must-be-disabled/)進一步瞭解禁用危險的PHP函數。

7. 上傳文件

若是你的應用程序不須要上傳任何文件,禁用上傳文件的功能有助於提升安全。想禁止用戶上傳文件,只須要編輯/etc/php.d/目錄下的security.ini文件,將file_uploads命令設成OFF。

file_uploads=Off

8.保持版本最新

開發人員在24/7不間斷地工做,給你使用的技術打上補丁。PHP也是同樣。因爲它有一個開源社區,補丁和修正版按期發佈。更新版還爲首日漏洞及其餘安全漏洞提供了安全補丁。若是你注重應用程序的安全性,就要始終確保你的PHP解決方案是最新版本。另外,給其餘相關技術打上最新的補丁能夠確保最大限度的安全。

9.控制文件系統訪問

默認狀況下,PHP可以使用fopen()等函數來訪問文件。open_basedir命令提供了訪問。首先,始終要將open_basedir命令設成/var/www/html目錄。將它設成其餘任何目錄會致使安全問題。

open_basedir="/var/www/html/"

10. 控制POST大小

咱們的最後一個PHP安全要點是控制POST大小函數。HTTP POST函數使用客戶端的瀏覽器,將數據發送到Web服務器。好比說,用戶可能上傳證書,而後發送到Web瀏覽器以便處理。一切都運行順暢,直到有一天黑客企圖發送龐大的文件來耗盡服務器資源。這極可能會致使服務器崩潰或響應緩慢。爲了保護服務器遠離這個漏洞,就須要設置POST大小。POST大小能夠在/etc/php.d/security.ini文件裏面加以設置。

post_max_size=1k

結束語

安全是廣大Web開發人員和Linux管理員最關注的問題之一。若是採起了上述要點,你勢必能夠增強開發環境和PHP Web應用程序方面的安全。要是你認爲咱們遺漏了重要的內容,歡迎留言補充。

原文地址:http://www.linuxprobe.com/linux-safety-points.html

相關文章
相關標籤/搜索