網站https 問題記錄

来源:https://www.cnblogs.com/smileZAZ/archive/2023/03/13/17212241.html
-Advertisement-
Play Games

這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 開發過程中 常見的 https 問題 - 避坑 做前端多年,發現有些問題需要重覆解決很多次,浪費了不少時間,https 導致的問題就屬於其中的一種,被不同崗位的同事問過很多次。 這篇關於 https 的科普文,趕緊安利給團隊的相關小伙伴看 ...


這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助

開發過程中 常見的 https 問題 - 避坑

做前端多年,發現有些問題需要重覆解決很多次,浪費了不少時間,https 導致的問題就屬於其中的一種,被不同崗位的同事問過很多次。 這篇關於 https 的科普文,趕緊安利給團隊的相關小伙伴看看吧,從此再也不會有人找你解決 https 相關的 bug,又多了一些摸魚的時間,爽(巴適得很)。

註:本篇文章提到的瀏覽器都是指 chrome 瀏覽器

案例 1 - 下載資源失敗或圖片載入失敗 - “Mixed Content”問題

在 https 網站中發起的 http 請求被禁止

這是因為最新版本的 chrome 提高了用戶安全策略,保護用戶免受不安全下載的侵害(點擊這裡查看 chrome 文檔 Protecting users from insecure downloads)

註意:

  1. https 協議的網站中不允許存在 http 協議的請求
  2. http 協議的網站中允許訪問 https 協議的資源

案例 2 - 瀏覽器提示網站不安全 記住的賬戶密碼不能自動填充 - 證書錯誤問題

提示不安全是因為 chrome 認為 當前網站存在信息泄漏的風險。

檢查當前網站協議是否為 https:
如果是 https 的話有兩種可能,一種是當前網站被標記為不安全,另一種是 https 證書無效、過期了。
如果是 http 的話,需要升級當前網站協議為 https。

chrome 瀏覽器對 http 協議的限制很多,所以運維在部署網站的時候大概率是需要申請 https 協議的。

賬號密碼不能自動填充是因為 chrome 記住密碼功能記住的網站是包含功能變數名稱、協議和埠的,其中一個變化了都不能自動填充。

註意:

  1. 項目部署後同時給功能變數名稱申請 https 安全協議
  2. 運維需要關註 https 自動續費,以免影響線上環境

案例 3 - webpack-dev-server 代理的後端服務 忽然報 CORS 錯誤 - 強制使用 https 問題

 

看控制台報錯,意思是後端服務自動跳轉到另一個服務了,而那個服務未開啟 cors 策略。 遇到這個問題的時候我很迷惑,跳轉的這個功能變數名稱也是非常規的功能變數名稱,以為是後端某位同學的服務註冊到線上了,但是經過觀察,發現線上環境沒有影響,只有本地開發環境的請求會報錯。
如果是後端本地服務註冊到線上,那麼線上和本地都應該是隨機訪問到這個同學的服務而報錯。
最後想到本地和線上的不同,就是一個是 http,一個是 https,在瀏覽器直接訪問後端的服務發現,後端服務開啟了 http 自動升級 https,因此所有 http 協議的請求都不能通過了。
查看後端服務的 nginx 配置,可以看到所有請求都配置了 301 重定向。

修改本地使用的後端服務協議為 https 解決此問題。

總結

總的來說,一個前端將會遇到的 https 問題大概有以下 3 種:

  1. Mixed Content 錯誤:
    當網站同時使用 HTTPS 和 HTTP 的資源時,例如在 HTTPS 的網站中引入 HTTP 的圖片、CSS、JavaScript 等文件,瀏覽器會提示“Mixed Content”錯誤,這是因為 HTTP 的資源容易被惡意攻擊者利用。解決方法是將所有資源都使用 HTTPS 進行載入。

  2. 證書錯誤:
    在使用 HTTPS 時,需要使用 SSL 證書來驗證網站的身份。如果證書無效、已過期或不受信任,瀏覽器會提示證書錯誤。解決方法是獲取有效的 SSL 證書,並將其安裝到 Web 伺服器中。

  3. HSTS:
    HSTS(HTTP Strict Transport Security)是一種安全機制,可以強制瀏覽器只使用 HTTPS 連接訪問網站。如果網站啟用了 HSTS,瀏覽器會自動將 HTTP 請求重定向到 HTTPS。在開發過程中,需要註意是否啟用了 HSTS,以避免由於 HSTS 導致的連接問題。

tips

  • https 是絕對安全的?
    https 也能被抓包,但是抓到之後攻擊者由於沒有私鑰所以也無法解密,抓到也沒有用。https 的安全是基於對證書頒發機構的信任的,也不能算是 100% 的安全。

  • 為什麼說非對稱加密效率不高 速度慢 具體體現在哪裡?
    對稱加密本質上是位運算包含位移和替換,非對稱加密包含大量大數乘法、大數模計算(RSA 的核心演算法是歐拉定理)。 AES 演算法的底層原理RSA 演算法詳解

  • 登錄密碼需要加密?
    如果說是為了防止被抓包,那沒必要,因為 https 已經做了數據加密,即使是被抓包了也是加密過的數據。 如果說是為了防止部分用戶存在一個密碼多個網站使用的情況下,密碼泄漏導致多個網站密碼泄漏,那就是有意義的。

  • 請求參數有必要加密?
    請求的參數沒必要加密,因為 https 本身會加密數據,服務端接收到之後會自動解密,如果再加一層加密,無疑增加了響應時間。 使用額外的加密層會增加網路負載和系統資源開銷

  • 響應數據有必要加密?
    根據上一條響應數據也沒必要加密,另外,響應體整體加密也沒必要,感興趣的同學可以看這篇response body 加密了怎麼辦? 來 破解它

本文轉載於:

https://juejin.cn/post/7208466455880417317

如果對您有所幫助,歡迎您點個關註,我會定時更新技術文檔,大家一起討論學習,一起進步。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 許可權基本介紹 drwxr-xr-x. 3 laffy snow 4096 3月 9 16:17 test 第1位:文件類型(d,-,l,c,b) d 文件夾 - 普通文件 l 軟鏈接 c 字元設備文件,如滑鼠鍵盤 b 塊設備,如硬碟 第2-4位:確定文件所有者對文件的許可權 第5-7位:確定文件所 ...
  • 在 WebAssembly 中使用 Rust 編寫 eBPF 程式併發布 OCI 鏡像 作者:於桐,鄭昱笙 eBPF(extended Berkeley Packet Filter)是一種高性能的內核虛擬機,可以運行在內核空間中,以收集系統和網路信息。隨著電腦技術的不斷發展,eBPF 的功能日益強 ...
  • 摘要:行存表示了一種數據的存儲方式,是最傳統的一種存儲方式。 本文分享自華為雲社區《【玩轉PB級數倉GaussDB(DWS)】行列存對比的一些事》,作者:sevenjiang。 行存表示了一種數據的存儲方式,是最傳統的一種存儲方式。對於GaussDB(DWS)來說可以認為其表示存儲引擎的基礎實現,在 ...
  • 摘要:集群運行過程中,有時候會執行併發量比較高的業務場景,一些資料庫沒有為這種高併發作業配置合適的參數,會導致作業大量報錯,這篇文章讓你玩轉併發作業。 本文分享自華為雲社區《【玩轉PB級數倉GaussDB(DWS)】線上運維 - 高併發導致資源類報錯分析解決》,作者:323老四。 集群運行過程中,有 ...
  • 資料庫的基本概念 資料庫(database)是用來組織、存儲和管理數據的倉庫。對資料庫中的數據可以進行增刪改查操作。市面上常見的資料庫有: MySQL(使用最廣泛。流行度最高的開源免費資料庫 Community+Enterprise) Oracle(收費) SQL Server(收費) Mongod ...
  • 1.新增特性 2.穩定性提升 3.其他調整 4.bug修複 5.GreatSQL VS MySQL社區版 6.GreatSQL Release Notes Changes in GreatSQL 8.0.25-17(2023-3-13) GreatSQL 8.0.25-17 是一個微小改進版本,主要 ...
  • 引言 在實際的業務統計需求中 有時往往需要對區間進行分組統計查詢,如分數區間,工資區間查詢統計等!mysql中可以利用elt函數來實現此類需求! 接下來看如下時間業務需求: 1:現在要進行統計,小於100的,100~500的,500~1000的,1000以上的,這各個區間的id數 mysql> se ...
  • 好家伙,本篇為《JS高級程式設計》第二十六章“模塊”學習筆記 JS開發會遇到代碼量大和廣泛使用第三方庫的問題。 解決這個問題的方案通 常需要把代碼拆分成很多部分,然後再通過某種方式將它們連接起來。 若代碼量較大,我們使用模塊化開發的模式,也能夠使代碼容易維護 我們需要模塊 1.模塊模式 把邏輯分塊, ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...