WordPress 插件和主題開發人員的 16 條安全提示

已發表: 2021-10-19

一個人永遠不能太小心!

作為開發人員,我們工作的很大一部分是確保我們正在構建的站點和插件是安全的。

企業需要更快的解決方案和越來越複雜的功能。 雖然這是一個很好的進展,但構建複雜的項目也需要適當的安全設置。 WordPress 安全性是網站開發最重要的方面之一。

隨著功能越來越複雜,許多開發人員錯過了基本的網站和 Web 應用程序開發安全原則。 這導致有缺陷的網站容易受到網絡攻擊和其他風險。

因此,您必須在構建項目時實施一些基本的網站和 Web 應用程序開發安全協議。
以下是針對 Web 開發人員的 16 條安全提示,可幫助您確保網站安全無虞。

1. 弄清楚哪些數據需要保護

最重要的網站開發安全原則之一是您只需要存儲必要的數據。
當你在開發一個項目時,你需要問這三個問題:

  • 公司需要存儲哪些數據?
  • 公司需要加密哪些敏感數據?
  • 如果由於某種原因,數據被洩露,它會對公司造成多大的傷害?

您存儲的敏感數據越多,暴露的風險就越大。 如果您必須存儲敏感數據,則需要對其進行加密,使其難以訪問。

2.實施角色管理和訪問控制

在設計網站、插件或主題時,為用戶提供盡可能低的權限很重要。

應該限制權限,以便用戶只能獲得他們需要的東西而不能訪問其他區域。

例如,貢獻者應該被限制為能夠創建新的帖子和頁面,但不能發布它們。 編輯應該能夠創建新帖子並發布它們,但不能更改設計或插件。

同樣,在您想要限制的插件或主題中開發特定功能時,請確保在安裝期間創建新的 WordPress 用戶角色。 讓管理員了解它們,以便將正確的角色分配給將使用您正在開發的插件或主題的相應用戶。

這是結構外觀的快速圖示。

角色管理和訪問控制結構

這種方法可以最大限度地減少問題,因為我們可以限制入侵者可以造成的破壞程度。 您還可以限制由好奇的用戶在他們確實不應該在網站區域亂搞的錯誤或錯誤造成的損害。

您還需要根據開發團隊的角色限制他們的訪問權限。

3.申請認證

網站身份驗證是允許用戶驗證其身份以訪問網站受限區域的安全過程。

在開發主題或插件時,您將擁有需要限制的某些數據,而用戶可以看到某些數據。 因此,您必須在代碼中添加檢查以驗證訪問受限數據的用戶是否經過身份驗證並具有正確的用戶角色。

同樣,在構建網站時,您可以實施有效的帳戶管理實踐,例如強密碼強制和多因素身份驗證,以保護用戶數據。

雙因素身份驗證是最流行的身份驗證方式之一。

雙重身份驗證 (2FA) 是一個兩步過程,除了您的網站密碼外,您還需要額外的代碼或一次性密碼 (OTP) 才能登錄您的網​​站。 此 OTP 通常通過短信、電話或可識別的 2FA 應用程序(例如 Google Authenticator、Authy、Duo Security 等)發送到另一台設備。 實施 2FA 可讓您免受暴力攻擊。

如果您在 WordPress 中構建您的網站,請查看這些令人難以置信的工具來保護您的網站。

  • 限制登錄嘗試:此工具通過限制登錄嘗試的次數來保護您免受暴力攻擊。 它還包括反垃圾郵件和自動非活動用戶註銷。
  • WP2 FA:WP2FA 插件可讓您立即為您的網站添加雙重身份驗證。 它還支持多個 2FA 應用程序,例如 Google Authenticator、Authy、FreeOTP、Duo Security 等。
  • Shield Security:此插件不支持 Google Authenticator 和 SMS 2FA 等 2FA 應用程序,但對使用 YubiKey 的人很有用。
  • WPassword:此插件可幫助您為 WordPress 網站實施強密碼,阻止登錄嘗試失敗次數過多的用戶等。 它與 WooCommerce 和其他第三方插件無縫集成。

4. 在發布之前檢查您的主題或插件

在發布主題或插件之前,您需要確保您的代碼盡可能無錯誤。 您可以使用某些 Composer 依賴項來檢測代碼中的任何漏洞。

WordPress 網站的一些推薦依賴項是:

  • Wpthemereview
  • Wp 編碼標準

這些編碼標準具有嚴格的編碼規則,例如在打印數據之前始終對數據進行轉義,對所有請求使用 nonce,在使用請求數據之前對其進行清理,提供適當的用戶權限等等,以幫助保護您的代碼。

如果您正在開發自己的主題或插件,這些工具非常有用。

您還應該查看 WPScan 安全掃描程序。 它是一款出色的在線網站安全掃描程序,可檢查您的網站是否存在任何漏洞。

5. 避免某些 PHP 函數

某些 PHP 函數,如 eval() 和 unserialize(),可能會暴露系統數據,並可能導致暴露服務器數據,從而導致服務器關閉或從黑客那裡訪問所有服務器信息。

以下是一些您應該盡可能避免使用的 PHP 函數:

eval() : eval 可以執行任意 PHP 代碼。 如果使用不當,它可能會使您的代碼遭受注入攻擊。

serialize()或 unserialize():不要將 serialize() 或 unserialize() 與用戶提供的輸入一起使用。 攻擊者可以利用這些功能。 他們可以傳遞帶有序列化任意對象的字符串來運行任意代碼。

md5() : 互聯網上到處都是關於 md5() 加密弱點的評論1 並且被認為是不安全的。 使用更好的散列函數,例如 SHA-2。

sha1() : sha1() 是另一個不應該使用的散列函數,因為散列算法的快速特性。 建議在任何現代框架中使用 SHA-2 散列算法代替 md5()。

6. 使用 linter 查找代碼中的問題

lint 工具是一種基本的靜態代碼分析器,可檢查您的源代碼是否存在程序和样式錯誤。 Linter 的輸出語氣應該友好,以保持項目向前發展。

Lint 代碼是在開發網站或應用程序時發現潛在漏洞並減少錯誤的好方法。 您可以將某些安全 linter 用於 PHP、JS 和 HTML 開發。

以下是一些用於靜態分析 PHP 代碼的著名工具:

  • PHP-並行-Lint
  • 聲納
  • 詩篇
  • PHP 皮棉

您也可以將 SonarLint 用於 HTML 和 Javascript linting。

其他值得注意的 JS linter 是:

  • JS皮棉
  • ES 皮棉

7.刪除未使用的代碼和插件

隨著軟件越來越複雜,代碼中存在漏洞的可能性也在增加。 WordPress 主題和插件也不例外。 HTML5、CSS 和 JavaScript 等代碼的功能不斷增加,使開發人員能夠構建豐富的 Web 應用程序。

然而,越來越複雜的應用程序是一把雙刃劍。 雖然它們有助於提供用戶期望的功能,但它們也擴大了應用程序的攻擊面。 處理此類漏洞的一種措施是刪除未使用的代碼。

不同的用戶可能不需要網站或 Web 應用程序的所有功能。 通過在每個部署中根據用戶要求刪除不必要的功能,您可以減少攻擊面和相關風險。

如果您喜歡在 WordPress 中開發網站,我們建議您使用滿足您需求的主題和插件,同時在代碼方面保持輕量級。 它們不僅可以確保您的網站安全,還可以幫助優化搜索引擎。 以下是一些可用的最好的輕量級和最快的 WordPress 主題。

8.使用服務器端和客戶端驗證

如果您喜歡編寫自定義代碼,則必須同時使用客戶端和服務器端驗證。 客戶端驗證有助於防止用戶犯下常見錯誤,例如錯誤輸入數據或忘記字段。 這種驗證會在無效數據到達服務器之前捕獲它,從而節省時間和金錢。

想像一下,如果客戶端驗證僅在與服務器的往返失敗後發生,您將面臨延遲告訴用戶他們做錯了什麼而不允許他們立即修復錯誤。

但是,僅客戶端驗證作為安全措施是不夠的。 您還需要使用服務器端驗證。 服務器端驗證可保護您免受惡意輸入和其他攻擊媒介的侵害。

9.清理任何用戶輸入和請求數據

用戶輸入清理是一種網絡安全措施,用於審核、清理和過濾來自用戶和 API 的任何未經授權或不需要的字符和字符串的數據,以防止將有害代碼注入系統。

黑客可以注入特定命令並執行可能危及您網站安全的操作。 輸入清理有助於維護數據完整性並提高系統安全性。

10. 應用永久修復

在執行安全檢查時,您可能會注意到一些不時再次出現的漏洞。 您需要確定新漏洞的根本原因,以便您可以永久根除它們,而不是添加部分補丁。

例如,您經常會在開發的主題或插件中遇到 SQL / XSS 問題。 在這種情況下,不是為每個輸入構建一個清理檢查,而是構建一個函數/類並使其成為一個策略,即每當有用戶輸入時,所有數據都應該通過這個類/函數傳遞。

11. 避免安全錯誤配置和默認設置

當未定義和實施安全設置並且維護默認值時,就會發生安全錯誤配置。 未能實施安全控製或實施錯誤可能會增加您構建的主題、插件或網站中存在漏洞的可能性。

錯誤配置經常發生,因為系統、數據庫管理員或開發人員沒有正確配置應用程序的框架,從而導致黑客的危險開放路徑。

確保默認設置是安全的,並且不會自動設置密碼(如果需要)。 例如,如果插件使用用戶可以上傳文件的目錄,請始終要求用戶設置密碼和目錄路徑。

12. 讓自己了解最新情況

網絡安全是一個不斷發展的領域。 您需要了解最新的安全更新和新出現的風險,以便跟上發展的步伐並減輕代碼中新出現的威脅。

作為開發人員,它有助於讓自己隨時了解新聞並編寫更安全的代碼,以及保護編碼、更好地清理代碼和更好地處理用戶輸入的最佳實踐是什麼。

為此,請在線關注專家並隨時了解您最喜歡的 Web 開發博客。 你已經在讀這個了。 所以你有一個好的開始。

以下是有關 WordPress 安全性的一些最佳資源。

  • WP White Security 博客
  • WordFence 博客
  • 蘇庫裡博客

13. 維護代碼

你今天寫的代碼明天可能就不安全了。 新的漏洞變種不斷出現,它也需要開發人員不斷升級。

當您向插件或主題添加新功能時,請檢查它是否不會影響其他模塊或類或代碼中的功能的安全性。 如果他們這樣做,您需要更新代碼以糾正問題。

您還可以使用 GitHub 等工具來維護主題或插件的代碼。 它將幫助您跟踪代碼並更快地解決問題。 安全總是在發展。 為了跟上最新趨勢,必須不斷更新您的安全測試,這樣您才能發現漏洞並加以改進。

14. 定期更新你的軟件包

這很簡單。

保持 PHP、Javascript、HTML 等軟件包的更新有助於解決新的安全問題。 提高軟件安全性始終是一個持續關注的問題,為此,我們始終與此類軟件的最新版本保持同步。

15.與你的團隊合作

記下向您的支持團隊提出的安全票。 如果您的客戶報告任何安全問題,請優先解決這些問題。 您的最終用戶對您的工作給出了最好的反饋,所以請好好利用它!

與開發團隊討論安全問題,並確保您開發的任何補丁都修復了安全問題,並且在公開之前不會破壞其他任何內容。 如果您需要經常與隊友合作或與整個部門都參與支持的大客戶合作,那麼使用網絡研討會軟件來促進這一過程是一個好主意。

16. 為最壞的情況做好準備

你不能太小心。 網絡和任何在網絡上發布的東西永遠不可能是 100% 安全的。 但是,您可以採取有助於降低風險的措施。

關鍵是評估潛在的漏洞並製定適當的風險應對措施,並採取適當的安全措施。 新的攻擊技術經常出現,因此最佳實踐也必須作為此過程的一部分發展。

例如,如果 WordPress 網站被黑客入侵,應急計劃應包括在被黑客入侵時應採取的措施。 這需要包含備份方法、清理過程以及重建網站和恢復服務所需的步驟。

這樣的計劃將允許所有利益相關者快速解決問題,而不會因信息過載或對不必要的行動反應過度而不知所措。

最後的想法

您還能做些什麼來提高主題或插件的安全性? 嗯,很多東西。 你看,編寫安全代碼不是一次性的事情。 技術不斷發展,攻擊方法也隨之發展。

現實情況是,您無法阻止所有網絡攻擊或減輕所有可能的風險。 你的目標應該是盡可能多地利用你所擁有的東西,並不斷地重新審視你的代碼以改進它。

為您的網站制定明確的安全計劃,並準備好面對最壞的情況。 確保將與安全相關的票證或報告作為最高優先級。

在您的社區中發布博客文章或公告,說明您已發布安全修復程序,以便您的所有用戶都可以更新並避免他們的網站受到威脅。

網絡安全與軍事戰略沒有太大區別。 關鍵是準備! 希望這篇文章可以幫助您做好準備。 請在評論中告訴我們您為提高網站安全性而採取的措施。

本文中使用的參考文獻[ + ]

本文使用的參考資料
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C