亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java面試突擊為什么要用HTTPS及它的優(yōu)點

 更新時間:2022年07月18日 09:04:52   作者:??Java中文社群?  
這篇文章主要介紹了Java面試突擊為什么要用HTTPS及它的優(yōu)點,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言

說到 HTTPS 相信大部分人都是不陌生,因為目前我們使用的絕大數(shù)網(wǎng)站都是基于 HTTPS 的,比如以下這些: 

 那么問題來了,他們?yōu)槭裁匆褂?HTTPS 呢?HTTPS 有哪些過人之處呢?

1.HTTP

在說 HTTPS 之前,我們先要了解 HTTP,因為 HTTP 是 HTTPS 通訊的基礎(chǔ)。 HTTP(HyperText Transport Protocol)超文本傳輸協(xié)議,它用于傳輸客戶端和服務(wù)器端的數(shù)據(jù)。

 HTTP 使用很簡單也很方便,但卻存在以下 3 個致命問題:

  • 使用明文通訊,內(nèi)容可以被竊聽。
  • 不驗證通訊方的真實身份,可能會遭到偽裝。
  • 無法證明報文的完整性,很容易被篡改。

鑒于以上問題,所以現(xiàn)在的系統(tǒng)會使用 HTTPS 來替代 HTTP。

2.HTTPS

首先來說,HTTPS 并不是一種新的協(xié)議,而是在 HTTP 協(xié)議的基礎(chǔ)上添加了加密機制 SSL(Secure Socket Layer)或 TLS(Transport Layer Security)。 HTTPS = HTTP + 加密 + 認證 + 完整性保護。

SSL 和 TLS:

SSL(Secure Socket Layer)最早是由瀏覽器開發(fā)廠商網(wǎng)景公司開發(fā)的,此公司開發(fā)了 SSL 3.0 及 3.0 之前的版本,之后便將 SSL 交給了 IETF(Internet Engineering Task Force)Internet 工程任務(wù)組的手中,IETF 以 SSL 3.0 為基礎(chǔ)開發(fā)了 TLS 1.0,所以可以認為 TLS 是 SSL 的“新版本”。

2.1 解決信任問題

作為 HTTPS 來說,首先要解決的就是信任問題,也就是身份效驗的問題,如果不解決信任問題就會存在服務(wù)器偽裝,也就是“中間人攻擊”的問題。 所謂的中間人攻擊指的是,正常情況下本該是客戶端和服務(wù)端直接進行交互的,但此處沖出來一個“壞人”(中間人),它包含在客戶端和服務(wù)器端之間,用于盜取和篡改雙方通訊的內(nèi)容,

如下圖所示: 

 HTTPS 解決信任問題采用的是數(shù)字證書的解決方案,也就是服務(wù)器在創(chuàng)建之初,會先向一個大家都認可的第三方平臺申請一個可靠的數(shù)字證書,然后在客戶端訪問(服務(wù)器端)時,服務(wù)器端會先給客戶端一個數(shù)字證書,以證明自己是一個可靠的服務(wù)器端,而非“中間人”。 此時瀏覽器會負責效驗和核對數(shù)字證書的有效性,如果數(shù)字證書有問題,那么客戶端會立即停止通訊,如果沒問題才會執(zhí)行后續(xù)的流程,

如下圖所示: 

 有了數(shù)字證書之后,就可以驗證服務(wù)器端的真實身份了,這樣就解決了“中間人攻擊”的問題,也解決了偽裝的問題。

2.2 解決明文傳輸和完整性問題

雖然上面我們已經(jīng)解決了信任問題,然而因為通訊雙方是明文通訊的,所以在通訊時依然存在通訊內(nèi)容被竊聽的風(fēng)險,此時應(yīng)該怎么辦呢? 于是我們想到,使用加密來解決信息暴露的問題。

加密的分類

加密主要分為兩大類:對稱加密和非對稱加密。

  • 在對稱加密中,有一個共享秘鑰,通過這把共享秘鑰可以實現(xiàn)信息的加密和信息的解密,它的特點是加密和解密的速度很快,但因為共享秘鑰的問題,一旦共享秘鑰被截獲,那么所謂的加密和解碼也就是一紙空談了。
  • 在非對稱加密中,有一對秘鑰:公鑰和私鑰,使用公鑰可以加密信息,但不能解密信息,使用私鑰可以解密信息。它的特點是服務(wù)器端保存私鑰,不對外暴露,只將公鑰發(fā)送給客戶端,而其他人即使拿到公鑰,也解密不了加密的信息,所以此方式更安全,但非對稱加密的執(zhí)行速度比較慢。

那在 HTTPS 中要使用對稱加密還是非對稱加密呢? 使用對稱加密,速度快,但不安全;使用非對稱加密安全,但速度慢。 只有小孩做選擇,成年人都要,所以 HTTPS 中既使用了非對稱加密也使用了對稱加密,它的整個交互流程是這樣的: 

 HTTPS 執(zhí)行流程如下:

  • 客戶端使用 HTTPS 訪問服務(wù)器端。
  • 服務(wù)器端返回數(shù)字證書,以及使用非對稱加密,生成一個公鑰給客戶端(私鑰服務(wù)器端自己保留)。
  • 客戶端驗證數(shù)字證書是否有效,如果無效,終止訪問,如果有效:
    • 使用對稱加密生成一個共享秘鑰;
    • 使用對稱加密的共享秘鑰加密數(shù)據(jù);
    • 使用非對稱加密的公鑰加密(對稱加密生成的)共享秘鑰。
    • 發(fā)送加密后的秘鑰和數(shù)據(jù)給服務(wù)器端。
  • 服務(wù)器端使用私鑰解密出客戶端(使用對稱加密生成的)共享秘鑰,再使用共享秘鑰解密出數(shù)據(jù)的具體內(nèi)容。
  • 之后客戶端和服務(wù)器端就使用共享秘鑰加密的內(nèi)容內(nèi)容進行交互了。

這樣,HTTPS 既保證了安全性,同時又保證了高效性,可謂魚和熊掌兼得。

使用加密的方式也間接的保證了數(shù)據(jù)的完整性問題,如果是不完整的數(shù)據(jù)或有多余的數(shù)據(jù),那么在解密時會報錯,這樣就能間接的保證數(shù)據(jù)的完整性了。

總結(jié)

使用 HTTP 協(xié)議存在明文通訊和中間人攻擊等問題,但這些問題在 HTTPS 中得到了有效的解決,HTTPS 通過數(shù)字證書解決了中間人攻擊的問題,使用加密手段解決了明文通訊和數(shù)據(jù)完整性的問題。

到此這篇關(guān)于Java面試突擊為什么要用HTTPS及它的優(yōu)點的文章就介紹到這了,更多相關(guān)Java HTTPS的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java語言圖形用戶登錄界面代碼

    java語言圖形用戶登錄界面代碼

    這篇文章主要為大家詳細介紹了java語言圖形用戶登錄界面代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • java多線程Future和Callable類示例分享

    java多線程Future和Callable類示例分享

    JAVA多線程實現(xiàn)方式主要有三種:繼承Thread類、實現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實現(xiàn)有返回結(jié)果的多線程。其中前兩種方式線程執(zhí)行完后都沒有返回值,只有最后一種是帶返回值的。今天我們就來研究下Future和Callable的實現(xiàn)方法
    2016-01-01
  • Java mybatis-plus詳解

    Java mybatis-plus詳解

    MyBatis-Plus是一個MyBatis的增強工具,在MyBatis的基礎(chǔ)上只做增強不做修改,為簡化開發(fā)、提高效率而生,本文給大家詳細講解一下MyBatis-Plus,需要的朋友參考下吧
    2021-09-09
  • springboot集成Swagger的方法(讓你擁有屬于自己的api管理器)

    springboot集成Swagger的方法(讓你擁有屬于自己的api管理器)

    在大型的項目中,如果你有非常多的接口需要統(tǒng)一管理,或者需要進行接口測試,那么我們通常會在繁雜地api中找到需要進行測試或者管理的接口,接下來通過本文給大家介紹springboot集成Swagger的方法讓你擁有屬于自己的api管理器,感興趣的朋友一起看看吧
    2021-11-11
  • mvn中dependencyManagement的使用詳解

    mvn中dependencyManagement的使用詳解

    這篇文章主要介紹了mvn中dependencyManagement的使用,子項目中只是聲明使用此依賴即可,可不用指定版本(將使用父pom同一指定的版本),若指定了版本,將以子項目的版本號為主,需要的朋友可以參考下
    2022-08-08
  • Elasticsearch中FST與前綴搜索應(yīng)用實戰(zhàn)解析

    Elasticsearch中FST與前綴搜索應(yīng)用實戰(zhàn)解析

    這篇文章主要為大家介紹了Elasticsearch中FST與前綴搜索應(yīng)用實戰(zhàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java實現(xiàn)擲骰子控制臺和窗體兩種方法

    Java實現(xiàn)擲骰子控制臺和窗體兩種方法

    這篇文章主要為大家詳細介紹了Java實現(xiàn)擲骰子控制臺和窗體兩種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • MyBatis?Generator生成的$?sql是否存在注入風(fēng)險詳解

    MyBatis?Generator生成的$?sql是否存在注入風(fēng)險詳解

    這篇文章主要介紹了MyBatis?Generator生成的$?sql是否存在注入風(fēng)險詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • springboot項目test文件夾下帶main方法的類不能運行問題

    springboot項目test文件夾下帶main方法的類不能運行問題

    這篇文章主要介紹了springboot項目test文件夾下帶main方法的類不能運行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java文件操作之按行讀取文件和遍歷目錄的方法

    Java文件操作之按行讀取文件和遍歷目錄的方法

    這篇文章主要介紹了Java文件操作之按行讀取文件和遞歸遍歷目錄的方法,遍歷目錄文中分別舉了遞歸和非遞歸的例子,需要的朋友可以參考下
    2016-03-03

最新評論