網絡安全:OWASP防護守則

目錄

一、OWASP十大WEB弱點防護守則

二、防護守則

1、權限控制失效

2、加密失誤

3、注入

4、不安全設計

5、安全配置缺陷

6、易受攻擊和過時的組件

7、身份認證和會話管理失效

8、缺乏完整性校驗

9、缺乏監控與日志記錄

10、服務端請求偽造

三、核心防護原則總結


一、OWASP十大WEB弱點防護守則

OWASP Top 10 是目前全球最權威、最具影響力的Web應用安全風險清單,由開放Web應用安全項目(OWASP)定期更新(2021版)。

排名風險名稱簡述
A01Broken Access Control權限控制失效,導致用戶可以訪問未授權的數據或功能。
A02Cryptographic Failures加密失誤,如未加密敏感數據或使用不安全的算法(舊稱“敏感數據泄露”)。
A03Injection注入,包括 SQL、NoSQL、命令注入等,攻擊者通過惡意輸入操控后端。
A04Insecure Design不安全設計,應用本身的設計缺陷,未考慮安全機制。
A05Security Misconfiguration安全配置缺陷,配置錯誤或默認設置未更改,導致系統暴露。
A06Vulnerable and Outdated Components易受攻擊和過時的組件,使用了已知漏洞的軟件組件,如庫、框架。
A07Identification and Authentication Failures身份認證和會話管理失效,身份驗證機制不當,如弱密碼、暴力破解。
A08Software and Data Integrity Failures缺乏完整性校驗,例如更新過程未驗證簽名。
A09Security Logging and Monitoring Failures缺乏監控與日志記錄,無法及時響應攻擊。
A10Server-Side Request Forgery (SSRF)服務端請求偽造,服務器被誘導請求外部資源,可能造成內網信息泄露。

二、防護守則

1、權限控制失效

  • 強制實施最小權限原則:?默認拒絕所有訪問,明確授予每個用戶/角色執行其任務所需的最小權限。

  • 集中化訪問控制檢查:?在服務器端使用統一的、經過嚴格測試的授權機制(如RBAC, ABAC),避免在客戶端進行關鍵權限判斷。

  • 禁用目錄列表:?確保Web服務器不會列出目錄內容。

  • 記錄和監控訪問失敗:?記錄失敗的授權嘗試并設置告警(尤其是管理員操作)。

  • API速率限制:?防止暴力破解和數據枚舉。

  • 強制所有權檢查:?對訪問對象(如文件、數據庫記錄)的操作前,必須驗證當前用戶是否擁有該對象(/users/{id}?中驗證?{id}?屬于當前用戶)。

  • 唯一、不可預測的訪問令牌:?使用JWT時設置短有效期,注銷時使其失效。

2、加密失誤

  • 敏感數據加密:?對傳輸中的敏感數據(密碼、個人信息、支付信息、健康數據等)強制使用強TLS(最新版如TLS 1.3),對存儲的敏感數據使用強加密算法(如AES-256)和安全的密鑰管理(HSM/KMS)。

  • 禁用舊協議/弱算法:?禁用SSL、早期TLS版本、弱密碼套件(如RC4, DES, MD5, SHA1)。

  • 使用強哈希存儲密碼:?使用自適應哈希算法(如Argon2id, scrypt, bcrypt, PBKDF2)并加鹽。

  • 禁止緩存敏感數據:?在HTTP響應頭設置?Cache-Control: no-store

  • 最小化數據收集和存儲:?只收集和存儲業務絕對必需的敏感數據,及時刪除不再需要的數據。

  • 避免在代碼/配置中硬編碼密鑰:?使用安全的密鑰管理系統。

3、注入

  • 使用安全的API:?優先使用提供自動參數化或安全對象關系映射(ORM)的API。絕對禁止拼接查詢/命令。

  • 參數化化查詢:?對SQL、NoSQL、OS命令、LDAP查詢等所有解釋型語句,使用參數化查詢(預編譯語句)或存儲過程。

  • 輸入驗證與輸出編碼:?對不受信任的輸入進行嚴格的、基于白名單的驗證(類型、長度、格式、范圍)。在將數據輸出到不同上下文(HTML, JavaScript, CSS, URL, SQL)時,使用上下文相關的輸出編碼

  • 使用ORM框架的安全方法:?避免使用可能引入注入的拼接方法。

  • LIMIT 防止大規模數據泄露:?在SQL查詢中使用LIMIT等子句限制返回行數。

4、不安全設計

  • 威脅建模:?在設計和開發生命周期早期(SDLC)進行威脅建模,識別潛在威脅并設計安全控制措施。

  • 安全設計模式:?采用成熟的安全設計模式和原則(如深度防御、最小權限、失效安全)。

  • 安全需求定義:?明確定義安全需求(如認證、授權、審計、加密、輸入驗證)。

  • 參考架構和安全控制庫:?使用經過驗證的安全參考架構和可重用的安全組件。

  • 安全編碼標準與培訓:?制定并強制執行安全編碼標準,對開發人員進行安全培訓。

  • 濫用案例建模:?考慮攻擊者可能如何濫用應用功能,并設計相應的防護。

5、安全配置缺陷

  • 最小化安裝:?移除不必要的功能、組件、文檔、示例和未使用的賬戶。

  • 加固配置:?為操作系統、框架、庫、應用程序設置安全、強化的配置(關閉調試模式、禁用管理接口、設置安全HTTP頭如CSP, HSTS, X-Content-Type-Options等)。

  • 自動化配置管理:?使用自動化工具(IaC如Terraform, Ansible)確保開發、測試、生產環境配置一致且安全。避免使用默認憑據。

  • 及時更新和打補丁:?建立流程,及時更新和修補操作系統、框架、依賴庫和應用程序。

  • 分離組件:?將不同安全級別的組件部署在隔離的網絡分段或容器中。

  • 安全掃描:?定期進行配置審計和安全掃描。

6、易受攻擊和過時的組件

  • 組件清單管理:?維護所有客戶端和服務器端組件(框架、庫、模塊)及其版本的準確清單(使用SCA工具)。

  • 持續監控漏洞:?訂閱安全通告(CVE),使用軟件成分分析(SCA)工具持續監控組件漏洞。

  • 及時更新/打補丁:?僅從官方渠道獲取組件,在評估風險后及時應用安全補丁或升級到安全版本。優先考慮有活躍維護的組件。

  • 移除無用/過時組件:?清理不再使用的依賴項。

  • 安全許可:?在引入新組件前進行安全評估和許可。

7、身份認證和會話管理失效

  • 實施強認證:?支持多因素認證(MFA),尤其是關鍵操作和高權限賬戶。防止弱密碼(使用密碼策略、密碼強度檢查器、阻止常見密碼)。

  • 安全的會話管理:?使用服務器端生成的、長且隨機的會話ID,通過安全Cookie傳輸(Secure,?HttpOnly,?SameSite?屬性),設置合理的會話超時(空閑和絕對超時)。

  • 安全的密碼管理:?使用強哈希存儲密碼(見A02),安全地處理密碼重置/忘記流程(避免知識問答、發送明文密碼),提供安全的密碼更改功能。

  • 防止憑證填充/暴力破解:?實施賬戶鎖定或遞增延遲機制,記錄失敗嘗試并監控。對登錄嘗試進行速率限制。

  • 統一錯誤消息:?登錄、注冊、密碼找回等環節使用統一的模糊錯誤消息(如“用戶名或密碼錯誤”),避免枚舉攻擊。

8、缺乏完整性校驗

  • 代碼/配置完整性驗證:?使用數字簽名驗證軟件來源和完整性(如代碼簽名、容器鏡像簽名)。確保CI/CD管道安全,防止未授權修改。

  • 依賴來源可信:?只從官方、受信任的源獲取依賴項和插件。驗證其簽名或哈希值。

  • 反序列化安全:?避免使用包含遠程代碼執行功能的危險反序列化器。如必須使用,實施嚴格的輸入驗證、類型限制(白名單)和沙箱隔離。

  • CI/CD安全:?保護構建管道,確保代碼倉庫、構建服務器的訪問控制和安全配置。

  • 關鍵數據完整性保護:?對關鍵配置或數據使用數字簽名或MAC(消息認證碼)驗證其未被篡改。

9、缺乏監控與日志記錄

  • 記錄關鍵安全事件:?確保記錄登錄(成功/失敗)、訪問控制失敗、輸入驗證失敗、系統錯誤、關鍵操作(如密碼修改、權限變更)、API調用等。

  • 日志包含足夠上下文:?日志條目應包含時間戳、源IP、用戶標識、事件描述、操作結果等,便于調查。

  • 集中化日志管理:?將日志發送到受保護的、集中的日志管理系統(如SIEM),防止本地篡改或丟失。

  • 實時監控與告警:?建立實時監控機制,對可疑活動(如大量登錄失敗、異常數據訪問模式)設置告警閾值,確保告警能被及時響應。

  • 定期審計與測試:?定期審計日志配置和內容,進行滲透測試驗證監控的有效性。

  • 保護日志數據:?確保日志存儲的安全性和完整性,控制對日志的訪問權限。

10、服務端請求偽造

  • 輸入驗證與過濾:?對用戶提供的URL或主機名/IP進行嚴格的基于白名單的驗證和過濾。避免直接使用用戶輸入構造請求。

  • 網絡層控制:?實施網絡分段,將后端應用部署在隔離網絡(DMZ),限制其只能訪問必要的內部資源。使用防火墻策略限制應用服務器出站連接的目標地址和端口。

  • 應用層控制:?使用應用層代理或具有嚴格目標限制的API網關來轉發請求。

  • 禁用非必要URL Schema:?僅允許?http/https,禁用?file,?ftp,?gopher,?dict?等危險schema。

  • 驗證響應:?不要將原始響應直接返回給客戶端,檢查響應內容是否合法。

  • 使用受信解析庫:?避免直接使用底層網絡庫處理用戶輸入。

三、核心防護原則總結

  • 縱深防御:?在多個層面實施安全控制。

  • 最小權限:?只授予完成任務所必需的最小權限。

  • 默認安全:?默認配置應是最安全的。

  • 永不信任用戶輸入:?對所有輸入進行嚴格驗證、過濾和輸出編碼。

  • 保持簡單:?減少攻擊面(移除不必要的功能、組件)。

  • 持續更新:?及時打補丁和升級。

  • 安全開發生命周期:?將安全融入設計、開發、測試、部署、運維全過程(DevSecOps)。

  • 監控與響應:?具備檢測、響應和恢復能力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86797.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Dagster 實現數據質量自動化:6大維度檢查與最佳實踐

在當今數據驅動的世界中,數據質量的重要性不言而喻。數據質量測試是確保數據準確、完整、一致和可靠的關鍵步驟。本文將深入探討數據質量測試的六大維度,并提供相關的檢查方法和最佳實踐。 什么是數據質量測試? 數據質量測試涉及評估數據以確…

計算機視覺之三維重建(深入淺出SfM與SLAM核心算法)—— 2. 攝像機標定

文章目錄 1. 前置知識1.1. 非齊次線性方程組求解1.1.1. 傳統求解方法1.1.2. 奇異值分解法1.1.3. 牛頓法或者梯度下降法 1.2. 齊次線性方程組的最小二乘解1.3. 非線性方程組的最小二乘解 2. 相機標定2.1. 相機內參數求解2.1.1. 求解 u 0 u_0 u0? 和 v 0 v_0 v0?2.1.2. 求解 …

SQLLL

595-big-countries https://leetcode.com/problems/big-countries/description/ 面積最大的國家 -- select name, population, area from World where area > 3000000 or population > 25000000596-classes-with-at-least-5-students https://leetcode.com/problems/…

MySQL中觸發器詳解 觸發器在自動化任務中的應用場景

觸發器是mysql中與表關聯的數據庫對象,能在特定操作(如insert、update、delete)發生時自動執行預定義sql邏輯。其核心用途包括:1. 維護數據一致性,如訂單插入后自動減少庫存;2. 記錄審計日志,如…

MySQL 8.0的數據庫root用戶默認無法遠程登錄,需要修改root的遠程授權

mysql> grant all privileges on . to ‘root’‘%’; ERROR 1410 (42000): You are not allowed to create a user with GRANT mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quick…

??MPI + OpenMP 環境配置指南(Windows/Linux)?

—— 讓你的并行計算飛起來 🚀 1. 簡介?? ??MPI (Message Passing Interface)??:用于多機分布式并行計算(進程級并行)。??OpenMP??:用于單機多線程并行計算(線程級并行)。??混合編…

新聞類鴻蒙應用功耗危機以及優化方案

🔋 ??一、功耗痛點:新聞類應用成“續航殺手”?? ??后臺進程失控?? ??高頻刷新??:未適配應用(如網易新聞、百度客戶端)默認每30秒后臺刷新內容,觸發CPU持續喚醒,單設備日均耗電增加1…

【小工具】-Doxygen01

0、前言 參考帖子。 使用Doxygen Documentation Generator自動添加注釋 Doxygen使用教程 代碼注釋規范之Doxygen 1、Doxygen介紹 Doxygen 是一個功能強大的開源文檔生成工具,主要用于從源代碼中自動提取注釋并生成專業的 API 文檔。它支持多種編程語言&#xff…

大模型Transformer觸頂帶來的“熱潮退去”,稀疏注意力架構創新或是未來

1. 大模型退潮:裸泳者離場,創新者浮出水面 資本熱潮逐漸冷卻,大模型賽道正經歷殘酷洗牌。過去兩年密集的“百模大戰”,本質是商業模式的軍備競賽,用數據規模與參數數量掩蓋技術同質化。當DeepSeek以61層精簡架構挑戰千…

Android編譯時打印所有引用的so庫路徑

在app module build.gradle 最后添加腳本 tasks.whenTaskAdded { task -> println("test 11 task.name:"task.name) if (task.name.startsWith(merge) && task.name.endsWith(NativeLibs)) { task.doFirst { prin…

暴雨亮相2025中關村論壇數字金融與金融安全大會

6月10日,由中關村金融科技產業發展聯盟與中關村互聯網金融研究院主辦的“2025中關村論壇系列活動——數字金融與金融安全大會”在中關村展示中心盛大召開。本次大會以“人工智能機遇:未來金融格局重塑及安全治理”為主題,匯聚政產學研各界精英…

mapstruct中的@Mapper注解詳解

在MapStruct中,Mapper注解是核心注解之一,用于標記一個接口或抽象類為MapStruct的映射器(Mapper)。MapStruct會在編譯時自動生成該接口的實現類,完成對象之間的屬性映射。以下是對Mapper注解的詳細解析: 1.…

uniapp+vue2+h5圖片下載保存,微信瀏覽器、非微信瀏覽器

小程序端 onDown() {// 檢查相冊權限uni.authorize({scope: scope.writePhotosAlbum,success: () > {this.downloadImage();},fail: () > {uni.showToast({title: "請授權相冊權限",icon: "none"});}}); }, downloadImage() {common.request(post, …

NumPy 與 OpenCV 版本兼容性深度解析:底層機制與解決方案

在計算機視覺項目中,NumPy 和 OpenCV 的兼容性問題常被低估,實則暗藏復雜的技術陷阱。下面從底層機制深入剖析核心兼容性問題及解決方案: 一、內存布局沖突:數組連續性陷阱 問題本質: OpenCV 的 C 內核要求 連續內存塊…

基于SpringBoot利用死信隊列解決RabbitMQ業務隊列故障重試無效場景問題

基于SpringBoot利用死信隊列解決RabbitMQ業務隊列故障重試無效場景問題 解決方案項目實戰1、生產者服務1.1、RabbitConfig定義相關交換機及死信隊列等配置數據1.2、TestController測試接口Controller 2、消費者服務2.1 BusinessQueueConsumer業務隊列監聽器2.2 DeadLetterConsu…

西安java面試總結1

這是我第二次的面試。其實第一次也算不上面試,去了讓我手寫了幾道題,三道算法題,一道SQL題,兩道邏輯思維題,做完之后也沒看我的解答,隨便看了一眼簡歷,覺得我是大二的,大三還有課&am…

【redis】線程IO模型

Redis線程IO模型 總結:在redis5.0及之前,redis線程io模型是單線程。那么Redis單線程如何處理那么多的并發客戶端連接的?原因兩點:1)非阻塞io 2)多路復用(事件輪詢) 以下&#xff0…

進程間通信詳解(三):Linux進程信號深度解析

文章目錄 一、Linux進程信號核心概念1.1 信號本質1.2 關鍵術語1.3 Linux 信號機制的核心流程: 二、信號產生機制全景2.1 通過終端按鍵產生信號2.1.1 基本操作 2.2 調用系統命令向進程發信號2.2.1 kill 命令:向指定進程發送信號2.2.2 killall 命令&#x…

C++ 日志系統實戰第五步:日志器的設計

全是通俗易懂的講解,如果你本節之前的知識都掌握清楚,那就速速來看我的項目筆記吧~ 本文項目代碼編寫收尾! 日志器類 (Logger) 設計(建造者模式) 日志器主要用于和前端交互。當我們需要使用日志系統打印 log 時&…

Spring Boot + MyBatis日志前綴清除方法

在 Spring Boot 結合 MyBatis 的應用中&#xff0c;清空日志前綴&#xff08;如 > 、< 等&#xff09;需要通過 自定義 MyBatis 的日志實現 或 修改日志模板 來實現。以下是兩種常用方法&#xff1a; 方法 1&#xff1a;自定義 MyBatis 日志實現&#xff08;推薦&#xf…