首頁 後端開發 php教程 推薦Linux管理員不可不知十大PHP安全要點

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

Dec 28, 2016 pm 05:48 PM
php

PHP是使用最廣泛的腳本程式語言之一。市佔率頗能說明其主導地位。 PHP 7已推出,這個事實讓這種程式語言對目前的開發人員來說更具吸引力。儘管出現了一些變化,但是許多開發人員對PHP的未來持懷疑態度。一個原因是PHP的安全。 

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

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

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

不妨仔細看幾個我們系統環境的關鍵檔案。你的檔案應該類似或對應以下: 

預設的網頁伺服器:Apache 

DocumentRoot:/var/www/html 

PHP設定檔:/etc/php.ini 
/php設定目錄:/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::20.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 
。 

加強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,  
disable_functions - 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伺服器。比如說,使用者可能會上傳證書,然後發送到網頁瀏覽器以便處理。一切都運作順暢,直到有一天駭客企圖發送龐大的檔案來耗盡伺服器資源。這很可能會導致伺服器崩潰或回應緩慢。為了保護伺服器遠離這個漏洞,就需要設定POST大小。 POST大小可以在/etc/php.d/security.ini檔案裡面加以設定。 

post_max_size=1k 

結論 

安全是廣大Web開發人員和Linux管理員最關心的問題之一。如果採取了上述要點,你勢必可以加強開發環境和PHP Web應用程式的安全。要是你認為我們遺漏了重要的內容,歡迎留言補充。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles