推薦Linux管理員不可不知十大PHP安全要點

來源:互聯網
上載者:User
PHP是使用最廣泛的指令碼程式設計語言之一。市場份額頗能說明其主導地位。PHP 7已推出,這個事實讓這種程式設計語言對當前的開發人員來說更具吸引力。儘管出現了一些變化,但是許多開發人員對PHP的未來持懷疑態度。一個原因是PHP的安全。

Linux管理員不可不知十大PHP安全要點
PHP是使用最廣泛的指令碼程式設計語言之一。市場份額頗能說明其主導地位。PHP 7已推出,這個事實讓這種程式設計語言對當前的開發人員來說更具吸引力。儘管出現了一些變化,但是許多開發人員對PHP的未來持懷疑態度。一個原因是PHP的安全。

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

在我們開始之前,有必要瞭解一下我們所要處理的系統。出於示範的需要,我們使用Fedora。然而,這些要點應該適用於Ubuntu版本或其他任何Linux發行版。查看你作業系統發行版的使用手冊,即可瞭解更多資訊。

不妨仔細看一下我們系統內容的幾個關鍵檔案。你的檔案應該類似或對應於下列:

預設的web伺服器:Apache

DocumentRoot:/var/www/html

PHP設定檔:/etc/php.ini

擴充配置目錄:/etc/php.d/

安全檔案:/etc/php.d/security.ini

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

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.kubiji.cn/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應用程式方面的安全。要是你認為我們遺漏了重要的內容,歡迎留言補充。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.