基于 Nginx + Spring Boot + Vue + JPA 的網站安全防護指南

引言

在現代互聯網時代,確保網站的安全性非常重要。尤其是基于前后端分離架構,更需要特別注意安全防護。接下來,帶你了解幾種常見的安全攻擊及其應對措施。

常見的安全攻擊及應對措施

1. 跨站腳本攻擊 (XSS)

攻擊描述: 跨站腳本攻擊,簡稱 XSS,就是攻擊者在網頁中注入惡意腳本,然后在用戶訪問頁面時執行這些腳本。這樣一來,攻擊者就能偷取數據或劫持用戶會話。

具體應對措施:

  • 輸入驗證和清理: 確保所有用戶輸入都經過驗證和清理。比如,使用 DOMPurify 庫清理 HTML 輸入。
    import DOMPurify from 'dompurify';
    let cleanInput = DOMPurify.sanitize(userInput);
    
  • 內容安全策略 (CSP): 通過 Nginx 配置 CSP,限制內容的加載來源。
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com";
    
  • 輸出編碼: 在顯示用戶輸入時,對其進行編碼,防止腳本執行。
    @GetMapping("/userInput")
    public String getUserInput(@RequestParam String input) {return HtmlUtils.htmlEscape(input);
    }
    

2. SQL 注入 (SQLi)

攻擊描述: SQL 注入攻擊是攻擊者通過操控輸入來執行未授權的 SQL 命令,進而訪問或修改數據庫中的數據。

具體應對措施:

  • 使用準備語句: 使用參數化查詢來防止 SQL 注入。
    @Query("SELECT u FROM User u WHERE u.username = :username AND u.password = :password")
    User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
    
  • 輸入驗證: 確保所有用戶輸入都經過驗證和清理。
  • 最小權限原則: 確保數據庫用戶僅具有執行所需操作的最低權限,避免過多權限。

3. 跨站請求偽造 (CSRF)

攻擊描述: CSRF 攻擊是攻擊者通過偽造用戶請求來執行未授權操作,利用用戶已認證的身份進行惡意操作。

具體應對措施:

  • 使用 CSRF 令牌: 在表單中加入唯一的 CSRF 令牌,并在服務器端進行驗證。
    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());}
    }
    
  • 驗證請求來源: 確保請求來自合法來源。
  • 使用 SameSite Cookie 屬性: 設置 Cookie 的 SameSite 屬性為 “Strict” 或 “Lax”。

4. 拒絕服務攻擊 (DoS/DDoS)

攻擊描述: 拒絕服務攻擊旨在通過大量請求耗盡服務器資源,使合法用戶無法訪問服務。

具體應對措施:

  • 速率限制: 使用 Nginx 配置速率限制,控制每個 IP 的請求頻率。
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    server {location / {limit_req zone=one burst=5;proxy_pass http://backend;}
    }
    
  • 負載均衡: 部署負載均衡器來分散流量。
  • 自動化防御工具: 使用如 Fail2Ban 的工具自動檢測并阻止惡意 IP。

5. 文件上傳漏洞

攻擊描述: 文件上傳漏洞允許攻擊者上傳惡意文件并在服務器上執行,從而獲取未經授權的訪問權限。

具體應對措施:

  • 文件類型驗證: 只允許上傳特定類型的文件,并對文件類型進行嚴格驗證。
    @PostMapping("/upload")
    public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) {if (!file.getContentType().equals("image/png")) {return ResponseEntity.status(HttpStatus.UNSUPPORTED_MEDIA_TYPE).body("Only PNG files are allowed");}// 保存文件代碼
    }
    
  • 存儲位置: 將上傳的文件存儲在非公開目錄中,避免直接訪問。
  • 文件名清理: 對上傳的文件名進行清理,防止路徑穿越攻擊。
    String filename = Paths.get(file.getOriginalFilename()).getFileName().toString();
    

操作系統安全防護建議

1. 定期更新和補丁管理

具體應對措施:

  • 定期更新操作系統和應用程序,確保安裝最新的安全補丁。
  • 使用自動更新功能,確保及時應用安全補丁。

2. 強化系統配置

具體應對措施:

  • 禁用不必要的服務和端口,減少攻擊面。
  • 配置防火墻,限制未授權的訪問。
    # 使用 firewalld 設置基本防火墻規則
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
    

3. 系統日志和監控

具體應對措施:

  • 啟用并定期檢查系統日志,檢測可疑活動。
  • 使用監控工具(如 Prometheus 和 Grafana)實時監控系統狀態。

數據庫安全防護建議

1. 數據庫訪問控制

具體應對措施:

  • 使用強密碼和多因素認證保護數據庫訪問。
  • 定義并執行嚴格的訪問控制策略,確保只有授權用戶才能訪問數據庫。
    CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'strongpassword';
    GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'appuser'@'localhost';
    

2. 數據庫加密

具體應對措施:

  • 對敏感數據進行加密存儲,確保即使數據被盜也無法讀取。
  • 使用傳輸層加密(如 TLS/SSL)保護數據庫連接。

3. 數據庫備份和恢復

具體應對措施:

  • 定期備份數據庫,確保數據在發生故障或攻擊后可恢復。
  • 定期測試備份和恢復過程,確保其有效性。
    # 使用 pg_dump 備份 PostgreSQL 數據庫
    pg_dump -U postgres -F c mydatabase > mydatabase_backup.dump
    # 恢復數據庫
    pg_restore -U postgres -d mydatabase mydatabase_backup.dump
    

案例分享:Target 數據泄露事件

事件背景: 2013 年,知名零售商 Target 遭遇了嚴重的數據泄露事件,導致超過 4000 萬張信用卡和借記卡信息被盜。

攻擊過程:

  • 攻擊者通過釣魚郵件獲取了 Target 的第三方供應商的網絡憑證。
  • 通過這些憑證,攻擊者進入了 Target 的內部網絡。
  • 利用內部系統的漏洞,攻擊者安裝了惡意軟件,捕獲了銷售終端設備的支付信息。

事故影響:

  • Target 賠償了數億美元,涉及法律訴訟和罰款。
  • 公司聲譽受到嚴重影響,客戶信任度下降。

防護教訓:

  • 實施多因素認證,保護重要系統的訪問。
  • 定期進行安全審計和漏洞掃描,及時修復漏洞。
  • 加強供應鏈安全管理,確保第三方供應商的安全性。

結論

通過實施這些安全措施,可以顯著提高基于 Nginx、Spring Boot、Vue 和 JPA 構建的前后端分離架構的網站系統的安全性。記住,安全不僅僅是技術上的配置,更是開發和運維中的良好習慣。希望這些建議對你有所幫助。如果有任何問題或需要進一步的幫助,歡迎隨時聯系我。

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

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

相關文章

css簡單易懂的加載動畫,看不會算我輸好吧

效果展示 步驟 第一階段 先準備結構&#xff0c;并且放置12個div&#xff0c;每一個div旋轉30*n度&#xff0c; 做一個圓圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Spark 分布式彈性計算集(RDD)相關概念介紹

目錄 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依賴關系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化級別 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

基于語義的法律問答系統

第一步&#xff0c;準備數據集 第二步&#xff0c;構建索引數據集&#xff0c;問答對數據集&#xff0c;訓練數據集&#xff0c;召回評估數據集 第三步&#xff0c;構建dataloader,選擇優化器訓練模型&#xff0c;之后召回評估 第四步&#xff0c;模型動轉靜&#xff0c;之后…

Synchronized底層工作原理

Synchronized 是Java中最常用的內置鎖機制&#xff0c;用于確保多線程環境下的同步。其底層原理涉及到JVM&#xff08;Java虛擬機&#xff09;和字節碼指令。以下是 synchronized 的底層工作原理的詳細介紹&#xff1a; 1. 基本概念 對象頭&#xff08;Object Header&#xf…

【UE5.1 角色練習】15-槍械射擊——子彈發射物

目錄 效果 步驟 一、創建并發射子彈 二、優化子彈 效果 步驟 一、創建并發射子彈 1. 在前面的文章中&#xff08;【UE5.1 角色練習】06-角色發射火球-part1&#xff09;我們創建了藍圖“BP_Skill_FireBall” 這里我們復制一份命名為“BP_Ammo_5mm”&#xff0c;用于表示…

科技的成就(六十一)

567、數據虛擬化 用來描述所有數據管理方法的涵蓋性術語&#xff0c;這些方法允許應用程序檢索并管理數據&#xff0c;且不需要數據相關的技術細節&#xff0c;例如它格式化的方式或物理位置所在。數據整合的過程&#xff0c;以此獲得更多的數據信息&#xff0c;這個過程通常會…

SLAM中的塊矩陣與schur補

文章目錄 SLAM中的塊矩陣與schur補Schur補的另一種解釋對角塊矩陣的逆為各個塊的逆的組合 SLAM中的塊矩陣與schur補 Schur補的另一種解釋 Schur從概率角度來解釋是比較常見的一種推導&#xff0c;可以參考博客https://blog.csdn.net/weixin_41469272/article/details/1219944…

若依搭建 帝可得 售貨機 筆記

一、搭建項目 1.后端gitee鏈接&#xff1a; 啟動項目時記得修改mysql和redis的相關信息&#xff1b;創建項目相關數據庫&#xff0c;并導入初始化的SQL腳本 dkd-parent: 帝可得后臺管理系統 (gitee.com) 2.前端gitee鏈接&#xff1a; 啟動項目時記得安裝依賴&#xff1a;np…

Github Action 自動部署更新靜態網頁服務

本文首發于 Anyeの小站&#xff0c;點擊跳轉 獲得更優質的閱讀體驗 前言 貼一段胡話 在用過 應用&#xff1a;靜態網頁服務 之后&#xff0c;事實證明&#xff1a; 總而言之&#xff0c;自動化是一個很令人著迷的東西&#xff0c;擺脫重復繁瑣的工作&#xff0c;解放了雙手的…

JCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷

JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷 目錄 JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷分類效果格拉姆矩陣圖GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介紹程序設計參考資料 分…

【45 Pandas+Pyecharts | 去哪兒海南旅游攻略數據分析可視化】

文章目錄 &#x1f3f3;??&#x1f308; 1. 導入模塊&#x1f3f3;??&#x1f308; 2. Pandas數據處理2.1 讀取數據2.2 查看數據信息2.3 日期處理&#xff0c;提取年份、月份2.4 經費處理2.5 天數處理 &#x1f3f3;??&#x1f308; 3. Pyecharts數據可視化3.1 出發日期_…

華南師范大學“大學生校外實踐教學基地”授牌儀式暨見習參觀活動圓滿結束

為促進校企合作的深入發展&#xff0c;培育出具有實際應用技能的人才&#xff0c;7月9日&#xff0c;華南師范大學數學科學院與廣東泰迪智能科技股份有限公司聯合開展“大學生校外實踐教學基地”授牌儀式暨見習參觀活動。華南師范大學數學科學院數據科學系主任陳艷男、副主任陳…

深入理解model.eval()與torch.no_grad()

model.eval() 使用model.eval()切換到測試模式&#xff0c;不會更新模型的w&#xff08;權重&#xff09;&#xff0c;b&#xff08;偏置&#xff09;參數通知dropout層和batchnorm層在train和val中間進行切換&#xff1a; 在train模式&#xff0c;dropout層會按照設定的參數p…

Idea 2023 使用GitLab提交代碼提示輸入Token

項目場景&#xff1a; 今天電腦換硬盤了&#xff0c;安裝了 IDEA2023 款的社區版開發工具&#xff0c;下載代碼后&#xff0c;提交并推送代碼到遠程服務器的時候&#xff0c;提示輸入Token&#xff0c;并不是用戶名和密碼。 問題描述 推送代碼到遠程GitLab本地倉庫的時候&…

單鏈表--續(C語言詳細版)

2.6 在指定位置之前插入數據 // 在指定位置之前插入數據 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); 分為兩種情況&#xff1a;1. 插入的數據在鏈表中間&#xff1b;2. 插入的數據在鏈表的前面。 // 在指定位置之前插入數據 void SLTInsert(SLTNode** …

AI繪畫何以突飛猛進? 從歷史到技術突破, 一文讀懂火爆的AI繪畫發展史

前言 自從前段時間偶然間被當下AI繪畫的水平震住之后&#xff08;超越一切的AI作畫神器&#xff0c;和它創作的234個盔甲美女未來戰士&#xff09; &#xff0c;作者深感當今AI繪畫的飛速進展或許已遠超所有人的預期。 而這里的前因后果&#xff0c;包括AI繪畫的歷史&#xff…

十九.升職加薪系列-JVM優化-解決JVM性能瓶頸的JIT即時編譯器

前言 在很多年以前&#xff0c;做C或者C的程序員經常說Java語言的運行速度不如C或C&#xff0c;Java運行速度慢主要是因為它是解釋執行的&#xff0c;而C或C是編譯執行的&#xff0c;解釋執行需要通過JVM虛擬機將字節碼實時翻譯成機器碼&#xff08;邊翻譯邊執行&#xff09;&…

Rust 版本升級:rustup update stable 報錯

Rust 版本升級 rustup update stable 報錯 一、報錯內容 error: could not download file from ‘https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256’ to ‘/Users/xxx/.rustup/tmp/rv6vdfu3eupwo64m_file’: failed to make network request: error sendi…

【實戰場景】@Transactional中使用for update的注意點

【實戰場景】Transactional中使用for update的注意點 開篇詞&#xff1a;干貨篇&#xff1a;知識回顧注意點1.鎖的范圍和粒度&#xff1a;2.事務的隔離級別&#xff1a;3.死鎖&#xff1a;4.性能影響&#xff1a;5.事務的邊界&#xff1a;6.異常處理&#xff1a;7. 數據庫和存儲…

【漏洞復現】網神 SecGate 3600 防火墻 sys_export_conf_local_save 任意文件讀取

免責聲明&#xff1a; 本文內容旨在提供有關特定漏洞或安全漏洞的信息&#xff0c;以幫助用戶更好地了解可能存在的風險。公布此類信息的目的在于促進網絡安全意識和技術進步&#xff0c;并非出于任何惡意目的。閱讀者應該明白&#xff0c;在利用本文提到的漏洞信息或進行相關測…