生產上線需要注意的安全漏洞

一、關閉swagger

1、關閉swagger v3

# 需同時設置auto-startup=false,否則/v3/api-docs等接口仍能繼續訪問
springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false

2、關閉swagger v2

# 只要不是true就不啟用
swagger:enable: false
# 如不起作用,查看項目中的config,是否配置開關
@Configuration
@EnableSwagger2
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.xxx.controller")).paths(PathSelectors.any()).build();}//構建 api文檔的詳細信息函數,注意這里的注解引用的是哪個private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Swagger2 構建RESTful API").description("API 描述").contact(new Contact("xx", "", "xx@xxx.com")).version("1.0")          .build();}}

二、關閉SpringBoot actuator

management.endpoints.enabled-by-default = false

三、HTTP頭信息泄露

為了隱藏這些不必要的頭信息,有各種可能的方法:
??? 1.如果是經源代碼編譯而來的,可改源代碼中的版本信息,具有一定的難度;
??? 2.通過配置對版本信息進行修改或者不顯示,達到以假亂真的目的,比較簡單;
??? 3.在服務器前加上反向代理軟件,過濾掉這些會顯示服務器版本信息的頭,有些復雜。

以下主要就第2種方法,分別介紹一下常用的Web服務器如何去掉或修改Server頭信息。

1>.Apache Web服務器版本號隱藏

# 找到配置文件apache2.conf或httpd.conf,修改其中的標記為:
ServerTokens ProductOnly
ServerSignature Off# 重啟apache服務
# curl -I localhost
HTTP/1.1 200 OK
Server: Apache
Accept-Ranges: bytes
Content-Length: 97
Connection: close
Content-Type: text/html

2>.Nginx服務器版本號隱藏

# 修改nginx.conf
# 在其中的http節加上server_tokens off;
http {……省略配置sendfile on;tcp_nopush on;keepalive_timeout 65;tcp_nodelay on;server_tokens off;…….省略配置
}
# 重啟Nginx后測試

四、敏感信息明文傳輸

1.網站負責人將網站地址提交到Gworg進行SSL證書認證。

2.然后將SSL證書配置到網站,并且開啟強制HTTPS訪問。

3.查看網站源碼是否存在http地址調用的資源,例如:圖片、視頻、CSS、JS代碼等,將這些代碼地址改成https或者下載到本地網站服務器調用。

4.對于敏感信息,例如密碼、秘鑰進行加密;例如:前端md5加密傳給服務端,服務端再次md5加密存入數據庫;

五、重放攻擊

短信轟炸

暴力破解

重放支付

如何防御

加隨機數

加時間戳

加流水號

其他方法

1)挑戰/應答:每次數據傳輸時,發送端都給接收端發送一個不同的“挑戰”字串,接收端收到這個“挑戰”字串后,做出相應的“應答”。

2)一次性口令:每次數據傳輸時,發送端都給接收端發送一個不同的“口令”,通信雙方通過消息中的口令來判斷消息的新鮮性。

3)頁面可以編寫防重復提交、后端自定義注解防止表單重復提交(RepeatableFilter);


六、敏感信息泄漏

1.不當的日志記錄:如果日志文件中包含了敏感數據,比如用戶密碼、身份證號碼等,且這些日志文件未經適當的保護,那么黑客可以隨意訪問這些文件來獲取敏感數據

2.SQL注入攻擊:如果應用程序的數據庫查詢語句是通過拼接字符串的方式構建的,存在SQL注入的風險。黑客可以通過輸入特殊字符來修改或者獲取數據庫中的數據。

3.不正確的加密和解密:如果應用程序使用不安全的加密算法,或者密鑰管理不當,黑客可以通過解密數據來獲取敏感信息。

解決方案:

1.應用程序層面的解決方案
? a. 合理使用訪問控制機制:對敏感數據的訪問進行嚴格的認證和授權,確保只有授權用戶能夠訪問敏感數據。
? b. 數據存儲安全:將敏感數據以加密形式存儲,確保數據在存儲過程中不被黑客獲取。
? c. 前端安全:編寫安全的前端代碼,對用戶輸入進行有效的驗證和過濾,防止惡意代碼注入。
? d. 安全的數據傳輸:使用安全的傳輸協議(如HTTPS)來傳輸敏感數據,確保數據在傳輸過程中不被黑客截取。
2.數據庫層面的解決方案
? a. 使用參數化查詢或預編譯語句:確保輸入的數據能夠正確轉義,防止SQL注入攻擊。
? b. 數據庫訪問控制:對數據庫的訪問進行嚴格的認證和授權,只允許授權用戶訪問敏感數據。
? c. 定期備份和監控數據庫:確保數據庫備份完整可用,及時發現和處理異常訪問行為。
3.加密和解密層面的解決方案
? a. 使用安全可靠的加密算法:確保加密算法足夠強大,如AES、RSA等。
? b. 密鑰管理:妥善管理密鑰,確保密鑰不泄露,定期更換密鑰以提高安全性。

實戰:

XssFilter 過濾sql參數;

七、賬號枚舉漏洞

1.對接口登錄頁面的判斷回顯提示信息修改為一致:賬號或密碼錯誤(模糊提示);不要精確報賬號不存在、密碼錯誤等提示語。
2.增加動態驗證碼機制,避免被探測工具批量枚舉用戶名。

八、CORS 信任任意來源漏洞

1?? 如果返回頭是以下情況,那么就是高危漏洞,這種情況下漏洞最好利用:

Access-Control-Allow-Origin: https://www.attacker.com

Access-Control-Allow-Credentials: true

?2?? 如果返回頭是以下情況,那么也可以認為是高危漏洞,只是利用起來麻煩一些:

Access-Control-Allow-Origin: null

Access-Control-Allow-Credentials: true

?3?? 如果返回以下,則不存在漏洞,因為Null必須是小寫才存在漏洞:

Access-Control-Allow-Origin: Null

Access-Control-Allow-Credentials: true

?4?? 如果返回以下,可認為不存在漏洞,因為CORS安全機制阻止了這種情況下的漏洞利用,也可以寫上低危的CORS配置錯誤問題。

Access-Control-Allow-Origin: *

Access-Control-Allow-Credentials: true

?5?? 如果返回以下,可認為不存在漏洞,也可以寫上低危的CORS配置錯誤問題。

Access-Control-Allow-Origin: *

解決辦法:

1. Access-Control-Allow-Origin中指定的來源只能是受信任的站點,避免使用Access-Control-Allow-Origin: *,避免使用Access-Control-Allow-Origin: null,否則攻擊者可以偽造來源請求實現跨域資源竊取。

2. 嚴格校驗“Origin”值,校驗的正則表達式一定要編寫完善,避免出現繞過的情況。

3. 減少“Access-Control-Allow-Methods”所允許的請求方法。

4. 除了正確配置CORS之外,Web服務器還應繼續對敏感數據進行保護,例如身份驗證和會話管理等。

5.后端服務禁止使用下邊代碼,使用nginx代理配置跨域:

    @Beanpublic CorsFilter corsFilter(){UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);// 設置訪問源地址config.addAllowedOrigin("*");// 設置訪問源請求頭config.addAllowedHeader("*");// 設置訪問源請求方法config.addAllowedMethod("*");// 對接口配置跨域設置source.registerCorsConfiguration("/**", config);return new CorsFilter(source);}

九、未授權訪問

【網絡安全】常見未授權訪問漏洞匯總

十、默認口令漏洞

所有中間件、組件密鑰都不得使用默認,修改為復雜的隨機密碼;

后端對新增、修改密鑰前,可以加入PasswordCheckUtil,進行復雜校驗:

檢測密碼中字符長度檢查密碼中是否包含數字檢查密碼中是否包含字母(不區分大小寫)檢查密碼中是否包含特殊字符鍵盤規則匹配器 橫斜向規則檢測評估a-z,z-a這樣的連續字符評估aaaa, 1111這樣的相同連續字符檢測常用詞庫用戶名校驗(LeetSpeak字符)

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

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

相關文章

深度解讀:淘客返利機器人無限制與免費版的差異

深度解讀:淘客返利機器人無限制與免費版的差異 在數字時代,人工智能和大數據技術的飛速發展正在改變我們的生活方式,尤其在購物領域,各種優惠工具如雨后春筍般涌現。其中,淘客返利機器人和微賺淘客系統以其獨特的優勢&#xff0c…

Python核心編程之序列下篇

目錄 十二、列表 如何創建列表類型數據并給它賦值 如何訪問列表中的值

代立冬:基于Apache Doris+SeaTunnel 實現多源實時數據倉庫解決方案探索實踐

大家好,我是白鯨開源的聯合創始人代立冬,同時擔任 Apache DolphinScheduler 的 PMC chair 和 SeaTunnel 的 PMC。作為 Apache Foundation 的成員和孵化器導師,我積極參與推動多個開源項目的發展,幫助它們通過孵化器成長為 Apache …

如何訪問內部網絡做內網穿透

項目:https://github.com/ehang-io/nps 有個公網服務器,搭建服務端。 然后客戶端使用: -server是服務端的訪問方式。-vkey是秘鑰。 ./npc -server192.227.19.12:8024 -vkeyoies8gq3wml -typetcp然后在服務端配置TCP隧道即可。

某度旋轉驗證碼v2 逆向分析

v2主要依據是核心 JS 文件mkd_v2.js 版本,如下圖所示: 第一次 https://passport.baidu.com/cap/init 接口,請求的 ak 是固定值,當然不同場景不同網站是不一樣的,_ 時間戳,ver1,返回值 as、tk 都…

大數據的技術棧-逐步完善

目錄 1.hadoop a.HDFS分布式文件系統 b.Yarn集群資源管理器 c.MapReduce sql引擎 d.Impala sql引擎 e.工具概觀 2.數據倉庫知識 a.Hive數據庫 1)Hive Sql 2)數據庫結構 b.Doris數據庫 3.混合處理框架SPARK a.Spark b.集群架構 4.數倉模型知識 5.開發工具 a.Dbeaver b.Idea…

android項目實戰之使用框架 集成多圖片、視頻的上傳

效果圖 實現方式,本功能使用PictureSelector 第三方庫 。作者項目地址:https://github.com/LuckSiege/PictureSelector 1. builder.gradle 增加 implementation io.github.lucksiege:pictureselector:v3.11.1implementation com.tbruyelle.rxpermissio…

線性回歸實戰

3.1 使用正規方程進行求解 3.1.1 簡單線性回歸 公式 : y w x b y wx b ywxb 一元一次方程,在機器學習中一元表示一個特征,b表示截距,y表示目標值。 使用代碼進行實現: 導入包 import numpy as np import matp…

中綴表達式轉后綴表達式與后綴表達式計算(詳解)

**中綴表達式轉后綴表達式的一般步驟如下: 1:創建一個空的棧和一個空的輸出列表。 2:從左到右掃描中綴表達式的每個字符。 3:如果當前字符是操作數,則直接將其加入到輸出列表中。 4:如果當前字符是運算符&a…

QNX usleep測試

QNX usleep測試 結論 usleep時間在QNX上沒有ubuntu上運行準確&#xff0c;但是10ms以上誤差不大。 測試代碼 testsleep.cpp的代碼如下&#xff1a; #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <time.h>double usleep_…

sklearn 筆記:neighbors.NearestNeighbors 自定義metric

1 數據 假設我們有這樣的一個數據tst_lst&#xff0c;表示的是5條軌跡的墨卡托坐標&#xff0c;我們希望算出逐點的曼哈頓距離之和&#xff0c;作為兩條軌跡的距離 [array([[11549759.51313693, 148744.89246911],[11549751.49813359, 148732.97804463],[11549757.620705…

Linux 常用命令匯總

1 linux定時任務 查看定時任務&#xff1a;crontab -l 每晚一點半執行定時任務&#xff1a; 30 1 * * * sh /var/lib/pgsql/pg_db_backup.sh >> /var/lib/pgsql/pg_db_backup.log 2>&1 配置定時任務&#xff1a;crontab -e 2 linux 內核版本查詢 cat /etc/r…

P5744 【深基7.習9】培訓

題目描述 某培訓機構的學員有如下信息&#xff1a; 姓名&#xff08;字符串&#xff09;年齡&#xff08;周歲&#xff0c;整數&#xff09;去年 NOIP 成績&#xff08;整數&#xff0c;且保證是 5 5 5 的倍數&#xff09; 經過為期一年的培訓&#xff0c;所有同學的成績都…

學習-java多線程

線程的創建 *繼承Tread,重寫run *實現Runnable接口,重寫run() [匿名內部類] *實現callable接口(有結果返回) 線程的常用方法 調用join保證這個方法先執行完成, 線程安全 并發編程 進程&#xff1a;就相當一個程序的實例線程&#xff1a;就是指令流&#xff08;一個進程包含多…

無重復字符的最長子串-中等

leetcode地址 給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長子串 的長度。 示例 1:輸入: s "abcabcbb" 輸出: 3 解釋: 因為無重復字符的最長子串是 "abc"&#xff0c;所以其長度為 3。 示例 2:輸入: s "bbbbb" 輸出: 1 …

我有才打造私域流量的知識付費小程序平臺

在當今數字化時代&#xff0c;知識付費市場正在迅速崛起&#xff0c;而私域流量的概念也日益受到重視。私域流量指的是企業通過自有渠道獲取的、能夠自由支配的流量&#xff0c;這種流量具有更高的用戶粘性和轉化率。因此&#xff0c;打造一個基于私域流量的知識付費小程序平臺…

實現:切換頁面切換標題,擴展 vue-router 的類型

布局容器-頁面標題 網址&#xff1a;https://router.vuejs.org/zh/guide/advanced/meta 給每一個路由添加 元信息 數據 router/index.ts const router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{ path: /login, component: () > im…

問題:數組對象去重

問題&#xff1a;數組對象去重 var arr [{name: ‘a’,id: 1}, {name: ‘a’,id: 2}, {name: ‘b’,id: 3}, {name: ‘c’,id: 4}, {name: ‘c’,id: 6}, {name: ‘b’,id: 6}, {name: ‘d’,id: 7}]; 對數組對象name進行去重處理&#xff0c; 結果顯示為&#xff1a; [{name…

第一啟富金:新添澳大利亞(ASIC)牌照

第一啟富金&#xff1a;澳大利亞證券及投資委員會&#xff08;ASIC&#xff09; GOLDWELL GLOBAL PTY LTD 是 WHOLESALE INVESTOR SERVICES PTY LTD&#xff08;CAR 編號 001304943&#xff09;的企業授權代表開發澳大利亞客戶&#xff0c;WHOLESALE INVESTOR SERVICES PTY LT…

XML是什么

XML是是什么&#xff1f; XML&#xff08;Extensible Markup Language&#xff09;&#xff0c;中文是可擴展標記語言&#xff0c;是標準通用標記語言的子集。它是一種標記語言&#xff0c;用于標記電子文檔&#xff0c;使其結構化。 XML可以用來標記數據&#xff0c;定義數據…