1. 程式人生 > >PHP網站的安全要點【轉】

PHP網站的安全要點【轉】

轉自:https://www.cnblogs.com/peteremperor/p/6370923.html

1. 刪除不必要的模組

PHP隨帶內建的PHP模組。它們對許多工來說很有用,但是不是每個專案都需要它們。只要輸入下面這個命令,就可以檢視可用的PHP模組:

1

<span class="hljs-comment"># php - m</span>

一旦你查看了列表,現在可以刪除不必要的模組。減少模組的數量有助於提高你所處理的Web應用程式的效能和安全。

2. 限制PHP資訊洩露

平臺洩露關鍵資訊司空見慣。比如說,PHP會洩露一些資訊,比如版本以及它安裝到伺服器上的事實。這可以通過expose_php命令來實現。為了防止洩露,你需要在/etc/php.d/security.ini中將該命令設成off。

1

<span class="hljs-attr">expose_php=<span class="hljs-literal">Off</span></span>

如果你需要了解版本及其狀態,只要針對網站地址執行一個簡單的Curl命令就可以獲得該資訊。

1

<span class="hljs-type">Curl - <span class="hljs-type">I http:<span class="hljs-comment"

>//www.livecoding.tv/index.php</span></span></span>

之前的命令會返回下列資訊:

1

2

3

HTTP/1.1 <span class="hljs-number">200 OK

<span class="hljs-attribute">X-Powered-By: PHP/7.0.10 

<span class="hljs-attribute">Content-type: text/html; charset=UTF-8</span></span></span>

3. 禁用遠端程式碼執行

遠端程式碼執行是PHP安全系統方面的常見安全漏洞之一。預設情況下,遠端程式碼執行在你的系統上已被啟用。“allow_url_fopen”命令允許請求(require)、包括(include)或可識別URL的fopen包裝器等函式可以直接訪問PHP檔案。遠端訪問通過使用HTTP或FTP協議來實現,會導致系統無力防禦程式碼注入安全漏洞。

為了確保你的系統安全可靠、遠離遠端程式碼執行,你可以將該命令設成“Off”,如下所示:

1

2

<span class="hljs-attr">Allow_url_fopen=<span class="hljs-literal">Off 

<span class="hljs-attr">allow_url_include=<span class="hljs-literal">Off</span></span></span></span>

4. 將PHP錯誤記入日誌

加強Web應用程式安全的另一個簡單方法就是,不向訪客顯示錯誤。這將確保黑客根本無法危及網站的安全性。需要在/etc/php.d/security.ini檔案裡面進行編輯。

1

<span class="hljs-attr">display_errors=<span class="hljs-literal">Off</span></span>

現在你可能會想:完成這一步後,“開發人員在沒有錯誤資訊的幫助下如何除錯?”開發人員可以使用log_errors命令來用於除錯。他們只需要在security.ini檔案中將log_errors命令設成“On”。

1

2

<span class="hljs-attr">log_errors=<span class="hljs-literal">On 

<span class="hljs-attr">error_log=/var/log/httpd/php_scripts_error.log</span></span></span>

5. 合理控制資源

為了確保應用程式的安全,控制資源很重要。為了確保適當的執行和安全,你就要對PHP指令碼執行予以限制。此外,還應該對花在解析請求資料上的時間予以限制。如果執行時間受到控制,指令碼使用的記憶體等其他資源也應該會得到相應配置。所有這些度量指標可通過編輯security.ini檔案來加以管理。

1

2

3

4

<span class="hljs-comment"># set in seconds 

<span class="hljs-attr">max_execution_time = <span class="hljs-number">25 

<span class="hljs-attr">max_input_time = <span class="hljs-number">25 

<span class="hljs-attr">memory_limit = <span class="hljs-number">30M</span></span></span></span></span></span></span>

6. 禁用危險的PHP函式

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

為此,你先要編輯php.ini檔案。一旦進入該檔案,找到disable_functions命令,禁用裡面的危險函式。為此,你只要拷貝/貼上下列程式碼。

1

2

3

<span class="hljs-built_in">disable_<span class="hljs-built_in">functions =<span class="hljs-built_in">exec,passthru

shell_<span class="hljs-built_in">exec,system,proc_open,popen,curl_<span class="hljs-built_in">exec

curl_multi_<span class="hljs-built_in">exec,parse_ini_file,show_<span class="hljs-built_in">source</span></span></span></span></span></span></span>

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

7. 上傳檔案

如果你的應用程式不需要上傳任何檔案,禁用上傳檔案的功能有助於提高安全。想禁止使用者上傳檔案,只需要編輯/etc/php.d/目錄下的security.ini檔案,將file_uploads命令設成OFF。

1

<span class="hljs-attr">file_uploads=<span class="hljs-literal">Off</span></span>

8. 保持版本最新

開發人員在24/7不間斷地工作,給你使用的技術打上補丁。PHP也是一樣。由於它有一個開源社群,補丁和修正版定期釋出。更新版還為首日漏洞及其他安全漏洞提供了安全補丁。如果你注重應用程式的安全性,就要始終確保你的PHP解決方案是最新版本。另外,給其他相關技術打上最新的補丁可以確保最大限度的安全。

9.控制檔案系統訪問

預設情況下,PHP可使用fopen()等函式來訪問檔案。open_basedir命令提供了訪問。首先,始終要將open_basedir命令設成/var/www/html目錄。將它設成其他任何目錄會導致安全問題。

1

<span class="hljs-attr">open_basedir=<span class="hljs-string">"/var/www/html/"</span></span>

10. 控制POST大小

我們的最後一個PHP安全要點是控制POST大小函式。HTTP POST函式使用客戶端的瀏覽器,將資料傳送到Web伺服器。比如說,使用者可能上傳證書,然後傳送到Web瀏覽器以便處理。一切都執行順暢,直到有一天黑客企圖傳送龐大的檔案來耗盡伺服器資源。這很可能會導致伺服器崩潰或響應緩慢。為了保護伺服器遠離這個漏洞,就需要設定POST大小。POST大小可以在/etc/php.d/security.ini檔案裡面加以設定。

1

<span class="hljs-attr">post_max_size=<span class="hljs-number">1k</span></span>