主頁 >  其他 > 讀《圖解HTTP》

讀《圖解HTTP》

2023-05-07 08:24:09 其他

最近讀了一本書《圖解HTTP》,讀完后在大體上對HTTP協議有了更深層次的了解,以下是我以前不懂的問題,通過閱讀此書后,這些問題都有了答案:

問題:

  • URI和URL的區別?

  • cookie到底是什么?有什么用?為什么要有?

  • 為什么下載時可以隨時停止,隨時繼續下載?

  • 什么是內容協商機制?

  • Http協議中回應頭的vary欄位到底是什么意思?

  • 最近讀了一本書《圖解HTTP》,讀完后在大體上對HTTP協議有了更深層次的了解,以下是我以前不懂的問題,通過閱讀此書后,這些問題都有了答案:

    問題:

    • URI和URL的區別?
    • cookie到底是什么?有什么用?為什么要有?
    • 為什么下載時可以隨時停止,隨時繼續下載?
    • 什么是內容協商機制?
    • Http協議中回應頭的vary欄位到底是什么意思?
    • Cookie的path屬性和domain屬性究竟是什么?
    • 為什么要有HTTPS?它與HTTP的區別在哪?
    • 什么是SSL和TSL?
    • HTTPS的混合加密機制+證書是怎樣的?
    • 什么是WebSocket?為什么要有WebSocket?
    • 什么是XSS攻擊、CSRF攻擊?

    以下是我對問題的理解以及總結上了其他人的理解,


    問題:URI和URL的區別?

    首先要明確一點,在網路上的所有資源都需要被定位,且它們都會有名稱,這樣才能按需獲取這些資源,

    URI就是這些資源的名稱,而URL就是這些資源的位置,但有時候資源的名稱中如果包含了位置,那么此時URI就和URL一樣了,

    因此可以看出URL是URI的子集,當URI中包含了資源位置,那URI就等同于URL,


    問題:cookie到底是什么?有什么用?為什么要有?

    HTTP協議是無狀態協議,也就是說協議不會去保存用戶的狀態,那么在這個情況下假設Web網站是需要登陸的,而進行頁面跳轉之后,用戶的狀態也就消失了,需要重新登陸一次,去獲取用戶狀態,即進行一次頁面跳轉,就要登陸一次,這樣是很繁瑣的,

    要解決這種問題,就是把用戶狀態進行保存,而用戶狀態保存到Web服務器也是不現實的,因為當出現很多個用戶狀態時會對Web服務器造成存盤上的負擔,所以用戶狀態必須保存到客戶端上,因為客戶端和服務器的關系是一對多,每個客戶端只需要保存一個份用戶狀態,這樣就能提高Web服務器的存盤性能,

    所以有了Cookie,使用Cookie,可以把用戶狀態存盤到客戶端上,客戶端每次向服務器發送請求時都會帶上Cookie,因此在服務器上只需要對這個Cookie的內容進行校驗即可,

    Cookie通常會搭配Session一起使用,可以維持客戶端與服務器之間的通信,只需要把SessionID通過Cookie發送給客戶端,然后客戶端每次請求服務器時,都通過Cookie把SessionID發給服務器,服務器對SeesionId進行校驗,這樣就能維持客戶端和服務器之間的通信了,


    問題:為什么下載時可以隨時停止,隨時繼續下載?

    首先,資源在服務器上是以位元組來進行存盤的,本質上一份資源就是多個0和1的組合,因此下載資源也就是復制這一份0和1的組合,

    所以下載時停止了,那么也就是往客戶端的磁盤上寫這個01組合的動作被停止了,如果此時想要繼續下載,就必須得知道這個01組合寫到哪了,客戶端需要從哪開始繼續寫01組合,也就是說客戶端必須要告訴服務器一個范圍,從這個范圍開始繼續把資源復制給客戶端,

    因此有了range欄位,客戶端在發送請求時,往請求頭上設定range欄位,就能設定這個范圍,


    問題:什么是內容協商機制?

    在單機情況下,一份資源通常只會有一個版本,但是對于一個多語言應用程式,可能需要為每種語言版本單獨創建一個檔案,這些檔案可能會被分別存盤在單機中的不同位置上,這樣在使用時可以根據用戶選擇的語言版本來讀取相應的檔案,因此,可以說在單機情況下,一份多語言資源可能會有多個語言版本,

    而在分布式系統中,同一份資源的不同版本可能存盤在不同的服務器上,由不同的服務器提供服務,這些服務器之間可以通過負載均衡或者其他技術來實作對用戶請求的處理,因此,不同國家的用戶請求的資源版本可能來自不同的服務器,

    無論在單機情況下還是分布式系統中都存在一個問題: 客戶端怎么決定要使用哪一個版本的資源呢?

    HTTP的內容協商機制很好的解決了這問題,內容協商機制是指:某一資源,服務器有多個版本,客戶端告知服務器自己的偏好,服務器根據偏好選擇合適的版本回應客戶端的請求,

    在內容協商機制中有以下三種方法來決定使用哪個版本資源:

    • 客戶端驅動協商(讓客戶端來選擇): 客戶端發起請求,服務器發送資源的可選項串列,客戶端作出選擇后再發送第二次請求,
    • 服務器驅動協商(讓服務器來選擇): 客戶端發送請求時把需要哪個版本的資源通過請求頭發送給服務器,讓服務器來決定使用哪個版本的資源,
    • 透明協商(讓中間代理來選擇): 使用某個中間設備(通常是快取代理)來代表客戶端進行協商,可以說是客戶端驅動協商的變種,

    問題:Http協議中回應頭的vary欄位到底是什么意思?

    假設整個請求程序是這樣的:客戶端 -> 代理服務器(具備快取功能) ->web服務器,

    第一個支持gzip壓縮的客戶端向中間代理服務器發送請求,代理服務器轉發該請求,向web服務器拉取內容,拿到內容后代理服務器快取該內容(由于請求首部有Accept-Encoding: gzip 所以內容會被壓縮),

    第二個不支持gzip壓縮的客戶端也向中間代理服務器發送同一個請求,代理服務器發現該請求已經被快取了,于是就把壓縮后的內容回應給該客戶端,悲劇了,因為該客戶端根本不支持gzip壓縮,也就沒法解壓,

    這種問題出現在透明協商機制中,問題的根源就在于代理把同一份資源回應給了不同的客戶端,而客戶端對份資源是有不同版本的要求的,

    為了解決這個問題,于是有了vary欄位,vary欄位用于列出一個回應欄位串列,告訴快取服務器遇到同一個 URL 對應著不同版本檔案的情況時,如何快取和篩選合適的版本,

    有了vary欄位之后,代理快取可以為通過單個URL訪問的檔案保存不同的副本,如果服務器把它們的決策程序傳給快取,這些代理就能代表服務器與客戶端進行協商,快取同時也是進行內容轉碼的好地方,因為部署在快取里的通用轉碼器能對任意服務器,而不僅僅是一臺服務器傳來的內容進行轉碼,

    更加詳細的介紹可以看這篇文章:https://codeleading.com/article/90534722641/


    問題:Cookie的path屬性和domain屬性究竟是什么?

    cookie一定會隨著客戶端發送的請求而到達服務器,而服務器上可能會出現多個域名的情況(服務器有多個域名的情況通常是因為同一個應用程式需要提供不同的服務或介面),那么就有個問題: cookie一定要被服務器的所有域名識別嗎?我想讓某些域名不能識別這個cookie那怎么辦?

    于是有了domain屬性,domain屬性用于用于指定哪些域名可以接受該Cookie,具體來說,如果設定了該屬性,則只有在該屬性值所指定的域名及其子域名下發送請求時,瀏覽器才會將該Cookie發送給服務器,

    舉個例子,假設我們有一個名為“example.com”的域名,并且在其上設定了一個Cookie,domain屬性值為“example.com”,此時,無論是在"ohj.example.com"子域名下,還是在“blog.example.com”子域名下,當瀏覽器發送請求時,都會將該Cookie附加在請求頭中發送給服務器,但如果發送請求的域名為“test.com”,則瀏覽器不會發送該Cookie,

    需要注意的是,domain屬性的值必須是當前域名或其子域名,否則瀏覽器不會發送該Cookie,同時,該屬性值不能包含協議名和埠號,

    現在Cookie發送到服務器的指定域名了,但是又有一個問題: 這個域名上的所有路徑都要使用這個cookie嗎?某些路徑不想使用怎么辦?
    于是有了path屬性,使用path屬性可以指定Cookie可以被哪些路徑使用,

    舉個例子,cookie的path屬性的值為/head,那么路徑為/head/ohj/、/head/xxx/都能使用到這個cookie,而/abc/test/路徑都不能使用到這個cookie,

    即cookie只會發往path屬性指定的路徑,只有path屬性的路徑與請求URL路徑一致時,cookie才會發送給服務器,

    總結: domain屬性用于控制cookie能夠發送給哪些域名,path屬性用于控制cookie在服務器上哪些路徑可以訪問,


    問題:為什么要有HTTPS?它與HTTP的區別在哪?

    首先,HTTP協議是存在安全隱患的,HTTP傳輸內容時,都是明文傳輸,存在被竊聽風險,而HTTP的內容也有可能被修改,

    于是有了HTTPS,HTTP+加密+認證+完整性保護=HTTPS,因此使用HTTPS能夠防止竊聽和篡改的風險,


    問題:什么是SSL和TSL?

    SSL(安全套接層)和TSL(傳輸層安全協議)是用于保護網路通信安全的協議,TLS是SSL的繼任者,它們的作用是在應用層和傳輸層之間提供一層安全協議,保護通信程序中的機密性、完整性和可靠性,


    問題:HTTPS的混合加密機制+證書是怎樣的?

    先了解一下共享密鑰加密和公開密鑰加密,

    共享密鑰加密: 使用一對完全一樣的公鑰來對資料進行加密解密,因此稱為共享密鑰加密,假設有個服務器A,服務器A用公鑰加密內容,然后發送給服務器B,服務器B用另一把相同的公鑰進行解密,

    公開密鑰加密: 使用一個非對稱的公鑰來對資料進行加密解密,一個密鑰叫公開密鑰,用于到處分享;一個密鑰叫私有密鑰,用于解密資料,不會到處分享,假設有個服務A,它先把公開密鑰發給服務器B,然后服務器B用公開密鑰加密內容,然后發送給服務器A,服務器A用私有密鑰進行解密,

    在HTTPS協議中使用的是混合密鑰加密,也就是把共享密鑰加密和公開密鑰加密結合結合在一起,

    • 公開密鑰加密通常只用于在建立連接時對客戶端和服務器之間的通信進行加密,(也就是用公開密鑰加密來確保共享密鑰能夠安全傳輸到客戶端,)
    • 共享密鑰對后續的請求和回應進行加密和解密,這種方式也被稱為對稱密鑰加密,

    到此,有個問題:客戶端怎么知道這個公開密鑰就是服務器發來的呢?

    為了解決這個問題,必須依賴第三方機構,于是有了證書,使用證書,可以確保這個公開密鑰就是服務器發來的,

    在我的理解中使用HTTPS的客戶端和服務器之間是這樣從連接-通信的:

    1. 服務器先把自己的公開密鑰在數字證書認證機構中登記,然后獲取公鑰證書,
    2. 服務器把認證過的公開密鑰和證書發給客戶端
    3. 客戶端使用瀏覽器內置的資料證書認證機構的公開密鑰對證書進行認證,認證通過后證明確實是服務器的公開密鑰,
    4. 客戶端用這個公開密鑰對客戶端生成的共享密鑰進行加密,然后發送給服務器,
    5. 服務器用自己的私有密鑰進行解密,得到客戶端發送的共享密鑰,
    6. 之后服務器和客戶端的通信就只用共享密鑰進行加密,

    問題:什么是WebSocket?為什么要有WebSocket?

    在HTTP協議中有以下缺點:

    • 一次連接只能發送一個請求,
    • 請求只能從客戶端開始,客戶端不可以接受除回應意外的指令,也就是服務器不能主動發送回應到客戶端,
    • 每次請求都會傳輸完整的請求頭,且請求頭都沒有壓縮過,請求頭資訊越多延遲越大,

    為了彌補HTTP的缺點,于是有了WebSocket,WebSocket是一種在單個TCP連接上提供全雙工通信的協議,通過這種協議,Web應用程式可以建立與服務器的持久性連接,實作實時通信和資料傳輸,

    WebSocket協議是在HTTP協議的基礎上進行升級得到的,在初始連接建立時,客戶端會發送一份HTTP協議的請求,該請求中包含升級為WebSocket協議的要求,如果服務器同意升級,則接下來的通信將采用WebSocket協議進行,這時候HTTP協議就不再使用了,因此,WebSocket協議也被稱為HTTP協議的升級版或擴展版,


    問題:什么是XSS攻擊、CSRF攻擊?

    XSS(跨站腳本攻擊):攻擊者通過注入惡意腳本代碼到受害者訪問的網頁上,從而獲取受害者的敏感資訊或者執行惡意操作的一種攻擊方式,XSS攻擊分為存盤型、反射型和DOM型三種形式, XSS攻擊的共同點為:將一些隱私資料像 cookie、session 發送給攻擊者,將受害者重定向到一個由攻擊者控制的網站,在受害者的機器上進行一些惡意操作,

    CSRF(跨站請求偽造):攻擊者通過偽造合法的請求來欺騙用戶執行操作的一種攻擊方式,攻擊者可以利用用戶已經登錄的身份,向服務器發送請求來執行一些惡意操作,例如,攻擊者可以通過偽造提交表單的請求來更改受害者的賬戶資訊,CSRF攻擊是攻擊者借助受害者的 Cookie 騙取服務器的信任,可以在受害者毫不知情的情況下以受害者名義偽造請求發送給受攻擊服務器,從而在并未授權的情況下執行在權限保護之下的操作,

  • Cookie的path屬性和domain屬性究竟是什么?

  • 為什么要有HTTPS?它與HTTP的區別在哪?

  • 什么是SSL和TSL?

  • HTTPS的混合加密機制+證書是怎樣的?

  • 什么是WebSocket?為什么要有WebSocket?

  • 什么是XSS攻擊、CSRF攻擊?

以下是我對問題的理解以及總結上了其他人的理解,


問題:URI和URL的區別?

首先要明確一點,在網路上的所有資源都需要被定位,且它們都會有名稱,這樣才能按需獲取這些資源,

URI就是這些資源的名稱,而URL就是這些資源的位置,但有時候資源的名稱中如果包含了位置,那么此時URI就和URL一樣了,

因此可以看出URL是URI的子集,當URI中包含了資源位置,那URI就等同于URL,


問題:cookie到底是什么?有什么用?為什么要有?

HTTP協議是無狀態協議,也就是說協議不會去保存用戶的狀態,那么在這個情況下假設Web網站是需要登陸的,而進行頁面跳轉之后,用戶的狀態也就消失了,需要重新登陸一次,去獲取用戶狀態,即進行一次頁面跳轉,就要登陸一次,這樣是很繁瑣的,

要解決這種問題,就是把用戶狀態進行保存,而用戶狀態保存到Web服務器也是不現實的,因為當出現很多個用戶狀態時會對Web服務器造成存盤上的負擔,所以用戶狀態必須保存到客戶端上,因為客戶端和服務器的關系是一對多,每個客戶端只需要保存一個份用戶狀態,這樣就能提高Web服務器的存盤性能,

所以有了Cookie,使用Cookie,可以把用戶狀態存盤到客戶端上,客戶端每次向服務器發送請求時都會帶上Cookie,因此在服務器上只需要對這個Cookie的內容進行校驗即可,

Cookie通常會搭配Session一起使用,可以維持客戶端與服務器之間的通信,只需要把SessionID通過Cookie發送給客戶端,然后客戶端每次請求服務器時,都通過Cookie把SessionID發給服務器,服務器對SeesionId進行校驗,這樣就能維持客戶端和服務器之間的通信了,


問題:為什么下載時可以隨時停止,隨時繼續下載?

首先,資源在服務器上是以位元組來進行存盤的,本質上一份資源就是多個0和1的組合,因此下載資源也就是復制這一份0和1的組合,

所以下載時停止了,那么也就是往客戶端的磁盤上寫這個01組合的動作被停止了,如果此時想要繼續下載,就必須得知道這個01組合寫到哪了,客戶端需要從哪開始繼續寫01組合,也就是說客戶端必須要告訴服務器一個范圍,從這個范圍開始繼續把資源復制給客戶端,

因此有了range欄位,客戶端在發送請求時,往請求頭上設定range欄位,就能設定這個范圍,


問題:什么是內容協商機制?

在單機情況下,一份資源通常只會有一個版本,但是對于一個多語言應用程式,可能需要為每種語言版本單獨創建一個檔案,這些檔案可能會被分別存盤在單機中的不同位置上,這樣在使用時可以根據用戶選擇的語言版本來讀取相應的檔案,因此,可以說在單機情況下,一份多語言資源可能會有多個語言版本,

而在分布式系統中,同一份資源的不同版本可能存盤在不同的服務器上,由不同的服務器提供服務,這些服務器之間可以通過負載均衡或者其他技術來實作對用戶請求的處理,因此,不同國家的用戶請求的資源版本可能來自不同的服務器,

無論在單機情況下還是分布式系統中都存在一個問題: 客戶端怎么決定要使用哪一個版本的資源呢?

HTTP的內容協商機制很好的解決了這問題,內容協商機制是指:某一資源,服務器有多個版本,客戶端告知服務器自己的偏好,服務器根據偏好選擇合適的版本回應客戶端的請求,

在內容協商機制中有以下三種方法來決定使用哪個版本資源:

  • 客戶端驅動協商(讓客戶端來選擇): 客戶端發起請求,服務器發送資源的可選項串列,客戶端作出選擇后再發送第二次請求,
  • 服務器驅動協商(讓服務器來選擇): 客戶端發送請求時把需要哪個版本的資源通過請求頭發送給服務器,讓服務器來決定使用哪個版本的資源,
  • 透明協商(讓中間代理來選擇): 使用某個中間設備(通常是快取代理)來代表客戶端進行協商,可以說是客戶端驅動協商的變種,

問題:Http協議中回應頭的vary欄位到底是什么意思?

假設整個請求程序是這樣的:客戶端 -> 代理服務器(具備快取功能) ->web服務器,

第一個支持gzip壓縮的客戶端向中間代理服務器發送請求,代理服務器轉發該請求,向web服務器拉取內容,拿到內容后代理服務器快取該內容(由于請求首部有Accept-Encoding: gzip 所以內容會被壓縮),

第二個不支持gzip壓縮的客戶端也向中間代理服務器發送同一個請求,代理服務器發現該請求已經被快取了,于是就把壓縮后的內容回應給該客戶端,悲劇了,因為該客戶端根本不支持gzip壓縮,也就沒法解壓,

這種問題出現在透明協商機制中,問題的根源就在于代理把同一份資源回應給了不同的客戶端,而客戶端對份資源是有不同版本的要求的,

為了解決這個問題,于是有了vary欄位,vary欄位用于列出一個回應欄位串列,告訴快取服務器遇到同一個 URL 對應著不同版本檔案的情況時,如何快取和篩選合適的版本,

有了vary欄位之后,代理快取可以為通過單個URL訪問的檔案保存不同的副本,如果服務器把它們的決策程序傳給快取,這些代理就能代表服務器與客戶端進行協商,快取同時也是進行內容轉碼的好地方,因為部署在快取里的通用轉碼器能對任意服務器,而不僅僅是一臺服務器傳來的內容進行轉碼,


問題:Cookie的path屬性和domain屬性究竟是什么?

cookie一定會隨著客戶端發送的請求而到達服務器,而服務器上可能會出現多個域名的情況(服務器有多個域名的情況通常是因為同一個應用程式需要提供不同的服務或介面),那么就有個問題: cookie一定要被服務器的所有域名識別嗎?我想讓某些域名不能識別這個cookie那怎么辦?

于是有了domain屬性,domain屬性用于用于指定哪些域名可以接受該Cookie,具體來說,如果設定了該屬性,則只有在該屬性值所指定的域名及其子域名下發送請求時,瀏覽器才會將該Cookie發送給服務器,

舉個例子,假設我們有一個名為“example.com”的域名,并且在其上設定了一個Cookie,domain屬性值為“example.com”,此時,無論是在"ohj.example.com"子域名下,還是在“blog.example.com”子域名下,當瀏覽器發送請求時,都會將該Cookie附加在請求頭中發送給服務器,但如果發送請求的域名為“test.com”,則瀏覽器不會發送該Cookie,

需要注意的是,domain屬性的值必須是當前域名或其子域名,否則瀏覽器不會發送該Cookie,同時,該屬性值不能包含協議名和埠號,

現在Cookie發送到服務器的指定域名了,但是又有一個問題: 這個域名上的所有路徑都要使用這個cookie嗎?某些路徑不想使用怎么辦?
于是有了path屬性,使用path屬性可以指定Cookie可以被哪些路徑使用,

舉個例子,cookie的path屬性的值為/head,那么路徑為/head/ohj/、/head/xxx/都能使用到這個cookie,而/abc/test/路徑都不能使用到這個cookie,

即cookie只會發往path屬性指定的路徑,只有path屬性的路徑與請求URL路徑一致時,cookie才會發送給服務器,

總結: domain屬性用于控制cookie能夠發送給哪些域名,path屬性用于控制cookie在服務器上哪些路徑可以訪問,


問題:為什么要有HTTPS?它與HTTP的區別在哪?

首先,HTTP協議是存在安全隱患的,HTTP傳輸內容時,都是明文傳輸,存在被竊聽風險,而HTTP的內容也有可能被修改,

于是有了HTTPS,HTTP+加密+認證+完整性保護=HTTPS,因此使用HTTPS能夠防止竊聽和篡改的風險,


問題:什么是SSL和TSL?

SSL(安全套接層)和TSL(傳輸層安全協議)是用于保護網路通信安全的協議,TLS是SSL的繼任者,它們的作用是在應用層和傳輸層之間提供一層安全協議,保護通信程序中的機密性、完整性和可靠性,


問題:HTTPS的混合加密機制+證書是怎樣的?

先了解一下共享密鑰加密和公開密鑰加密,

共享密鑰加密: 使用一對完全一樣的公鑰來對資料進行加密解密,因此稱為共享密鑰加密,假設有個服務器A,服務器A用公鑰加密內容,然后發送給服務器B,服務器B用另一把相同的公鑰進行解密,

公開密鑰加密: 使用一個非對稱的公鑰來對資料進行加密解密,一個密鑰叫公開密鑰,用于到處分享;一個密鑰叫私有密鑰,用于解密資料,不會到處分享,假設有個服務A,它先把公開密鑰發給服務器B,然后服務器B用公開密鑰加密內容,然后發送給服務器A,服務器A用私有密鑰進行解密,

在HTTPS協議中使用的是混合密鑰加密,也就是把共享密鑰加密和公開密鑰加密結合結合在一起,

  • 公開密鑰加密通常只用于在建立連接時對客戶端和服務器之間的通信進行加密,(也就是用公開密鑰加密來確保共享密鑰能夠安全傳輸到客戶端,)
  • 共享密鑰對后續的請求和回應進行加密和解密,這種方式也被稱為對稱密鑰加密,

到此,有個問題:客戶端怎么知道這個公開密鑰就是服務器發來的呢?

為了解決這個問題,必須依賴第三方機構,于是有了證書,使用證書,可以確保這個公開密鑰就是服務器發來的,

在我的理解中使用HTTPS的客戶端和服務器之間是這樣從連接-通信的:

  1. 服務器先把自己的公開密鑰在數字證書認證機構中登記,然后獲取公鑰證書,
  2. 服務器把認證過的公開密鑰和證書發給客戶端
  3. 客戶端使用瀏覽器內置的資料證書認證機構的公開密鑰對證書進行認證,認證通過后證明確實是服務器的公開密鑰,
  4. 客戶端用這個公開密鑰對客戶端生成的共享密鑰進行加密,然后發送給服務器,
  5. 服務器用自己的私有密鑰進行解密,得到客戶端發送的共享密鑰,
  6. 之后服務器和客戶端的通信就只用共享密鑰進行加密,

問題:什么是WebSocket?為什么要有WebSocket?

在HTTP協議中有以下缺點:

  • 一次連接只能發送一個請求,
  • 請求只能從客戶端開始,客戶端不可以接受除回應意外的指令,也就是服務器不能主動發送回應到客戶端,
  • 每次請求都會傳輸完整的請求頭,且請求頭都沒有壓縮過,請求頭資訊越多延遲越大,

為了彌補HTTP的缺點,于是有了WebSocket,WebSocket是一種在單個TCP連接上提供全雙工通信的協議,通過這種協議,Web應用程式可以建立與服務器的持久性連接,實作實時通信和資料傳輸,

WebSocket協議是在HTTP協議的基礎上進行升級得到的,在初始連接建立時,客戶端會發送一份HTTP協議的請求,該請求中包含升級為WebSocket協議的要求,如果服務器同意升級,則接下來的通信將采用WebSocket協議進行,這時候HTTP協議就不再使用了,因此,WebSocket協議也被稱為HTTP協議的升級版或擴展版,


問題:什么是XSS攻擊、CSRF攻擊?

XSS(跨站腳本攻擊):攻擊者通過注入惡意腳本代碼到受害者訪問的網頁上,從而獲取受害者的敏感資訊或者執行惡意操作的一種攻擊方式,XSS攻擊分為存盤型、反射型和DOM型三種形式, XSS攻擊的共同點為:將一些隱私資料像 cookie、session 發送給攻擊者,將受害者重定向到一個由攻擊者控制的網站,在受害者的機器上進行一些惡意操作,

CSRF(跨站請求偽造):攻擊者通過偽造合法的請求來欺騙用戶執行操作的一種攻擊方式,攻擊者可以利用用戶已經登錄的身份,向服務器發送請求來執行一些惡意操作,例如,攻擊者可以通過偽造提交表單的請求來更改受害者的賬戶資訊,CSRF攻擊是攻擊者借助受害者的 Cookie 騙取服務器的信任,可以在受害者毫不知情的情況下以受害者名義偽造請求發送給受攻擊服務器,從而在并未授權的情況下執行在權限保護之下的操作,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551831.html

標籤:其他

上一篇:網站被攻擊了!!!!!!

下一篇:返回列表

標籤雲
其他(158581) Python(38118) JavaScript(25404) Java(18023) C(15222) 區塊鏈(8262) C#(7972) AI(7469) 爪哇(7425) MySQL(7165) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5335) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1965) Web開發(1951) HtmlCss(1932) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 讀《圖解HTTP》

    最近讀了一本書《圖解HTTP》,讀完后在大體上對HTTP協議有了更深層次的了解。以下是我以前不懂的問題,通過閱讀此書后,這些問題都有了答案: 問題: URI和URL的區別? cookie到底是什么?有什么用?為什么要有? 為什么下載時可以隨時停止,隨時繼續下載? 什么是內容協商機制? Http協議中 ......

    uj5u.com 2023-05-07 08:24:09 more
  • 網站被攻擊了!!!!!!

    重要宣告-針對攻擊者 網站pljzy.top被某人攻擊 添加鏈接描述 首先 說我網站抄襲,文章抄襲,ok,你列舉一下我有那幾篇文章是抄的別人的?自己眼睛不看的是吧,但凡我參考的別人的文章我都會放原文地址。 先放幾張圖片,真搞不懂我抄誰了,下面全是我自己電腦的md檔案,我抄誰的了?全是我自己做的筆記。 ......

    uj5u.com 2023-05-07 08:24:05 more
  • 雙非院校,0專案經驗,三個月入職大廠自動化測驗崗,月薪30k+

    今年的金三銀四已經成為了過去試,自動化測驗求職幾家歡喜幾家愁。有人offer拿到手軟,有人從灰飛煙滅到人間地獄。
    我們用了2個月的時間,調研了200多位軟體測驗工程師和100個在2023年熱招的崗位,對過去一年自動化測驗領域人才求職和熱招崗位情況深度分析了一下。發現了一些情況,以饗大家。 ......

    uj5u.com 2023-05-07 08:23:46 more
  • 【問題排查篇】一次業務問題對 ES 的 cardinality 原理探究

    小編作業中負責業務的一個服務端系統,使用了 Elasticsearch 服務做資料存盤,業務運營人員反饋,用戶在使用該產品時發現,用戶后臺統計的訂單筆數和匯出的訂單筆數不一致!對此進行排查并進行總結 ......

    uj5u.com 2023-05-07 08:23:20 more
  • 淺談聯網汽車安全漏洞

    ?“智能網聯汽車存在內生共性問題,即軟硬體的漏洞后門,基于此進行的網路攻擊可以直接帶來勒索、盜竊、大規模車輛惡意操控風險,還有資料泄露等網路安全事件。如果內生的漏洞后門問題不解決,系統自身難保,很難談系統安全之上的資料安全、應用安全。” ——中國工程院院士鄔江興 隨著汽車智能化、網聯化技術發展,汽車 ......

    uj5u.com 2023-05-07 08:23:02 more
  • Vulnhub之Funbox 4靶機詳細測驗程序(提權成功)

    Funbox 4 靶機資訊 名稱:Funbox: CTF URL: https://www.vulnhub.com/entry/funbox-ctf,546/ 識別靶機IP地址 將靶機匯入 VirtualBox。配置其網卡為主機模式配置。啟動 Kali Linux 和靶機。 內置 netdiscov ......

    uj5u.com 2023-05-07 08:22:52 more
  • 【介面自動化測驗】月薪12k必會技術,從0到1學習介面自動化測驗,6個

    ?導讀:在所有的開發測驗中,介面測驗是必不可少的一項。有效且覆寫完整的介面測驗,不僅能保障新功能的開發質量,還能讓開發在修改功能邏輯的時候有回歸的能力,同時也是能優雅地進行重構的前提。撰寫介面測驗要遵守哪些原則?測驗代碼的結構應該是什么樣的?介面測驗有哪些實踐技巧?本文分享作者在介面測驗上的實踐總結 ......

    uj5u.com 2023-05-07 08:22:44 more
  • 用Radare2模擬shellcode運行

    本文將探討如何在x86_64的Ubuntu系統上模擬32位ARM shellcode。由于大多數筆記本電腦和作業站還沒有運行ARM,我們這里需要一種其他方法在系統上執行非原生的指令。 ......

    uj5u.com 2023-05-07 08:22:31 more
  • 使用Aidlux,輕松落地電力巡檢AI應用

    本專案參考AidLux AI 實戰訓練營內容,3-4個課時落地AI應用 電力線路是電力系統的重要組成部分, 它的安全可靠運行直接關系到一個國家經濟的穩定發展。 電力線路一旦出現故障,則有可能影響到成片區域的供電安全, 嚴重的甚至造成不可估量的損失。 因此, 預防電力線路故障預防歷來是電力系統的一項重 ......

    uj5u.com 2023-05-07 08:22:15 more
  • 8年測驗開發,寫給1-3年功能測驗的幾點建議,滿滿硬貨指導

    從15年畢業到現在也從業八年了,普通本科畢業,現在一家互聯網公司擔任測驗部門總監,摸爬打滾,坑坑洼洼也經歷了不少。思緒很久決定還是寫下這篇,希望對后進的小伙子少走一點彎路。 很多人把職場想得太美好,其實不然。如果你沒有規劃好,你就會難免遇到各種各樣的問題:作業不開心;沒有前進的動力;作業不是自己想像 ......

    uj5u.com 2023-05-07 08:21:57 more