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.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
你可以在此(http://www.php.cn/)進一步了解禁用危險的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应用程序方面的安全。要是你认为我们遗漏了重要的内容,欢迎留言补充。
以上就是详细介绍Linux管理员不可不知十大PHP安全要点的详情的内容,更多相关内容请关注PHP中文网(www.php.cn)!