[知識點梳理PART1] 走心整理的計算機網絡常見問題集錦

參考鏈接:https://blog.csdn.net/weixin_33692284/article/details/88773012
參考鏈接:https://blog.csdn.net/justloveyou_/article/details/78303617

NO1 – Http和Https

1 基本概念

HTTP:是互聯網上應用最爲廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。

HTTPS:是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。HTTPS協議的主要作用可以分爲兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

2 區別

Http協議運行在TCP之上,即明文傳輸,客戶端和服務器端都無法驗證對方的身份;
Https是身披SSL(Secure Socket Layer)外殼的Http,運行於SSL上,SSL運行於TCP之上,是添加了加密和認證機制的HTTP。
二者存在的不同主要有以下幾點:

  • (1) 端口不同
    Http和Https使用的是不同的連接方式,用到的端口也不一樣,Http是80,Https是443
  • (2)資源消耗
    Http是超文本傳輸協議,信息是明文傳輸,Https則是具有安全性的ssl加密傳輸協議。和Http通信相比,Https通信會由於加減密處理消耗更多的CPU和內存資源
  • (3)成本開銷
    Https協議需要用到CA申請證書,一般免費的較少,因此需要一定的費用向認證機構購買
  • (4)安全性能
    Http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全

Https 的加密機制是一種共享密鑰加密和公開密鑰加密並用的混合加密機制。

3 HTTP長連接、短連接

在HTTP/1.0中默認使用短連接。
也就是說,客戶端和服務器每進行一次HTTP操作,就建立一次連接,任務結束就中斷連接。
當客戶端瀏覽器訪問的某個HTML或其他類型的Web頁中包含有其他的Web資源(如javaScript文件、圖像文件、CSS文件等),
每遇到這樣一個Web資源,瀏覽器就會重新建立一個HTTP會話。

而從HTTP/1.1起,默認使用長連接,用以保持連接特性。
使用長連接的HTTP協議,會在響應頭加入這行代碼:

Connection:keep-alive

在使用長連接的情況下,當一個網頁打開完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP連接不會關閉
客戶端再次訪問這個服務器時,會繼續使用這一條已經建立的連接。
Keep-alive 不會永久保持連接,它會保持一個時間,可以在不同的服務器軟件(如Apache)中設定時間。
實現長連接需要客戶端和服務端都支持長連接。

HTTP協議的長連接和短鏈接, 實質是TCP協議的長連接和短連接。

NO2 – 對稱加密和非對稱加密

1 基本概念

  • 對稱加密是指加密和解密使用的是同一個密鑰的方式。
    這種方法存在的最大問題就是密鑰發送問題,即如何將密鑰安全的發給對方,密鑰在網絡中傳輸,安全性不高
  • 非對稱加密是指使用的是一對非對稱的密鑰的方式,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。
    公鑰可以隨意發佈,但私鑰只有自己知道。發送密文的一方使用對方的公鑰進行加密處理,對方接收到加密信息後,使用自己的私鑰進行解密。

2 加密方法

由於非對稱加密的方式 不需要發送用來解密的私鑰,所以可以保證安全性;
但是和對稱加密比起來,它非常的慢,
所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式 發送出去。

NO3 – 從輸入網址到獲得頁面的過程

  • (1)域名解析,其實就是根據用戶輸入的網址去尋找它對應的IP地址
    瀏覽器查詢DNS,獲取域名對應的IP地址
  • (2)建立TCP連接
    瀏覽器獲得域名對應的IP地址後,瀏覽器向服務器請求建立鏈接,TCP/IP 鏈接建立起來後,瀏覽器向服務器發送HTTP請求
  • (3)根據SpringMVC後臺業務返回數據,並把數據填充到HTML頁面上,然後返回給瀏覽器
    服務器接收到這個請求,並根據路徑參數映射到特定的請求處理器進行處理
  • (4)瀏覽器進行處理
    瀏覽器解析並渲染視圖,若遇到對js文件、css文件及圖片等靜態資源的引用,則重複上述步驟並向服務器請求這些資源
  • (5)繪製網頁
    瀏覽器根據其請求到的資源、數據渲染頁面,最終向用戶呈現一個完整的頁面

瀏覽器解析DNS的過程

(1)域名解析,其實就是根據用戶輸入的網址去尋找它對應的IP地址,比如輸入www.baidu.com的網址就會經歷以下過程

1.先從瀏覽器緩存裏找IP,因爲瀏覽器會緩存DNS記錄一段時間

2.如沒找到,再從Hosts文件查找是否有該域名和對應IP

3.如沒找到,再從路由器緩存找

4.如沒好到,再從DNS緩存查找

5.如果都沒找到,瀏覽器域名服務器向根域名服務器(baidu.com)查找域名對應IP,還沒找到就把請求轉發到下一級,直到找到IP
在這裏插入圖片描述

過程及其使用的協議

在這裏插入圖片描述

NO-4 TCP中的擁塞控制

計算機網絡中的帶寬、交換節點中的緩存及處理機等都是網絡的資源。
在某段時間裏,若對網絡中某一資源的需求超過了該資所能提供的可用部分,網絡的性能就會變壞,這種情況就叫做阻塞。
擁塞控制就是防止過多的數據注入網絡中,這樣可以使網絡中的路由器或鏈路不致過載。
注意:擁塞控制和流量控制的不同,前者是一個全局性的過程,而後者指點對點通信量的控制。

1 慢啓動

不要一開始就發送大量的數據,先探測一下網絡的擁塞程度,也就是說由小到大逐漸增加擁塞窗口的大小

2 擁塞避免

擁塞避免算法讓擁塞窗口緩慢增長,即每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,而不是加倍,這樣擁塞窗口按線性規律緩慢增長
在這裏插入圖片描述

3 快重傳

快重傳要求接收方在收到一個失序的報文段後就立即發出重複確認(爲的是使發送方及早知道有報文段沒有到達對方)而不要等到自己發送數據時捎帶確認。
快重傳算法規定,發送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段,而不必繼續等待設置的重傳計時器時間到期。

在這裏插入圖片描述

4 快恢復

快重傳配合使用的還有快恢復方法,
當發送方連續收到三個重複確認時,就執行“乘法減小” 算法,把ssthresh門限減半,但是接下來並不執行慢開始算法
因爲如果網絡出現擁塞的話就不會收到好幾個重複的確認,所以放發送現在認爲網絡可能沒有出現擁塞,所以現在不執行慢開始算法
而是將cwnd設置爲ssthresh的大小,然後執行擁塞避免算法。
在這裏插入圖片描述

NO-5 OSI網絡體系結構與TCP/IP協議模型

0 體系結構圖

TCP/IP與OSI最大的不同在於:OSI是一個理論上的網絡通信模型,而TCP/IP則是實際的網絡通信標準。
但是,它們的初衷是一樣的,都是爲了使得兩臺計算機能夠像兩個知心朋友那樣互相準確理解對方的意思並作出優雅的迴應。
學習計算機網絡我們採取的是折中的辦法,採取的是一種只有五層協議的體系結構。
在這裏插入圖片描述

1 物理層(physical layer)

在物理層上所傳送的數據單位是比特。
參考模型的最底層,**作用是實現相鄰計算機節點之間比特流的透明傳輸,儘可能屏蔽掉具體傳輸介質和物理設備的差異,**使其上面的數據鏈路層不必考慮網絡的傳輸介質是什麼。

“透明傳送比特流”表示經實際電路傳送後的比特流沒有發生變化,對傳送的比特流來說,這個電路好像是看不見的。

2 數據鏈路層(data link layer)

數據鏈路層負責兩臺主機之間的數據傳輸接收來自物理層的位流形式的數據並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀幀拆分成位流形式的數據,轉發到物理層。(在兩個相鄰節點的鏈路上傳送幀。) 數據鏈路層在物理層提供的比特流的基礎上,通過差錯控制、流量控制方法,使有差錯的物理鏈路變爲無差錯的數據鏈路,(不僅要檢錯還要糾錯)即提供可靠的通過物理介意傳輸數據的方法。

3 網絡層(network layer)

網絡層負責爲不同主機提供邏輯通信服務,並通過路由選擇算法爲分組通過通信子網選擇最適當的路徑
在發送數據時,網絡層把傳輸層產生的報文段或用戶數據包封裝成分組和包進行傳送。
在TCP/IP體系結構中,由於網絡層使用IP協議,因此分組也叫IP數據報,簡稱數據報。

在這裏插入圖片描述

4 傳輸層 (transport layer)

傳輸層的主要任務就是負責兩臺主機進程之間的通信提供通用的數據傳輸服務。
在源端和目的端之間提供可靠的透明數據傳輸,使上層服務用戶不必關心通信子網的實現細節。

“通用的”是指並不針對某一特定的網絡應用,而是多種應用可以使用同一個運輸層服務。
由於一臺主機可同時運行多個線程,因此傳輸層用複用和分用的功能。
所謂複用就是指多個應用層進程可同時使用下面運輸層的服務
分用和複用相反,是運輸層把收到的信息分別交付上面應用層中的相應進程。

在協議棧中,傳輸層位於網絡層之上,傳輸層協議爲不同主機上的進程提供邏輯通信,而網絡層協議爲不同主機提供邏輯通信。
在這裏插入圖片描述

5 應用層

應用層的任務是通過應用進程間的交互來完成特定網絡應用
應用層協議定義的是應用進程間的通信和交互的規則。對於不同的網絡應用需要不同的應用層協議。
在互聯網中,應用層協議有很多,如域名系統DNS,,支持萬維網應用的HTTP協議,支持電子郵件的SMTP協議等。
我們把應用層交互的數據單元成爲報文。

  • 域名系統

域名系統(Domain Name System縮寫 DNS,DomainName被譯爲域名)是因特網的一項核心服務,它作爲可以將域名和IP地址相互映射的一個分佈式數據庫,能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。(百度百科)
例如:一個公司的Web網站可看作是它在網上的門戶,而域名就相當於其門牌地址,通常域名都使用該公司的名稱或簡稱。
例如上面提到的微軟公司的域名,類似的還有:IBM公司的域名是 www.ibm.com、Oracle 公司的域名是 www.oracle.com、Cisco公司的域名是www.cisco.com 等。

  • HTTP協議

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲廣泛的一種網絡協議。
所有的 WWW(萬維網) 文件都必須遵守這個標準。設計 HTTP 最初的目的是爲了提供一種發佈和接收 HTML 頁面的方法。(百度百科)

6 TCP和UDP分別對應的常見應用層協議

TCP對應的常見應用層協議

  • FTP:定義了文件傳輸協議,使用21端口
    常說某某計算機開了FTP服務便是啓動了文件傳輸服務。下載文件,上傳主頁,都要用到FTP服務。
  • Telnet:它是一種用於遠程登陸的端口
    用戶可以以自己的身份遠程連接到計算機上,通過這種端口可以提供一種基於DOS模式下的通信服務。
    如以前的BBS是純字符界面的,支持BBS的服務器將23端口打開,對外提供服務。
  • SMTP:定義了簡單郵件傳送協議
    現在很多郵件服務器都用的是這個協議,用於發送郵件。
    如常見的免費郵件服務中用的就是這個郵件服務端口,所以在電子郵件設置中常見到有SMTP端口設置這一欄,服務器開放的是25端口
  • POP3:它是和SMTP對應,POP3用於接收郵件
    通常情況下,POP3協議所用的是110端口
    也就是說,只要你有相應的使用POP3協議的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陸進郵箱界面,直接用郵件程序就可以收到郵件(如是163郵箱就沒有必要先進網易網站,再進入自己的郵箱來收信)

UCP對應的常見應用層協議

  • DNS: 用於域名解析,將域名地址轉換爲IP地址。DNS用的是53端口

  • SNMP:簡單網絡管理協議,使用161端口,是用來管理網絡設備的
    由於網絡設備很多,無連接的服務就體現出其優勢

  • TFTP(Trival File Transfer Protocal ):簡單文件傳輸協議
    該協議在熟知端口69端口使用UDP服務。

圖示:
在這裏插入圖片描述

7 網絡層的地址解析協議ARP協議

ARP(地址解析協議):該協議可以把網絡層IP32位地址轉化爲數據鏈路層MAC48位地址。
網絡層的ARP 完成了IP地址與物理地址的映射。

  • ARP協議的工作過程
    第一步,首先,每臺主機都會在自己的ARP緩衝區中建立一個ARP列表,以表示IP地址和MAC地址的對應關係。

第二步,當源主機需要將一個數據包要發送到目的主機時:
會首先檢查自己的ARP列表中是否存在該IP地址對應的MAC地址:
如果有,就直接將這個數據包發送到這個MAC地址;
如果沒有,就向本地網段發起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址
此ARP請求數據包裏包括源主機的IP地址、硬件地址、以及目的主機的IP地址


第三步, 網絡中所有的主機收到這個ARP請求後,會檢查數據包中的目的IP是否和自己的IP地址一致。
如果不相同直接忽略,
如果相同,該主機首先將發送端的MAC地址和IP地址添加到自己的ARP列表中,
如果ARP表中已經存在該IP的信息,則將其覆蓋,然後給源主機發送一個ARP響應數據包,告訴對方自己是它需要查找的MAC地址


第四步,源主機收到這個ARP響應數據包後,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,並利用此信息開始數據的傳輸
如果源主機一致沒有收到ARP響應數據包,表示ARP查詢失敗


ARP緩存表:IP地址-MAC地址映射表。 ARP緩存表是ARP協議和RARP協議運行的關鍵;
ARP緩存表緩存了IP地址到硬件地址之間的映射關係;
ARP緩存表中的記錄並不是永久有效的,有一定的期限,因爲IP地址是不斷變化的

查詢ARP表會出現兩種情況:

  • ARP緩存表緩存有 IP地址和MAC地址的映射關係:
    發送端可以 直接告知自身的數據鏈路層目的MAC地址。
  • ARP緩存表沒有緩存IP地址和MAC地址的映射關係:
    向除了接受的數據報的發送者意外廣播信息,接收到回信記錄對應的地址。

廣播發送ARP請求,單播發送ARP響應。

NO-6 客戶端不斷進行請求鏈接會怎樣?DDOS(Distributed Denial of Service)攻擊?

服務器端會爲每個請求創建一個鏈接,並向其發送確認報文,然後等待客戶端進行確認

1 DDoS攻擊

  • 客戶端向服務端發送請求鏈接數據包
  • 服務端向客戶端發送確認數據包
  • 客戶端不向服務端發送確認數據包,服務器一直等待來自客戶端的確認

2 DDoS預防 (沒有徹底根治的方法,除非不使用TCP)

  • 限制同時打開SYN半鏈接的數目
  • 縮短SYN半鏈接的Time out 時間
  • 關閉不必要的服務

NO-7 Get 與POST的區別

Get與POST是我們常用的HTTP Method, 二者的區別主要表現在如下五個方面:

  • (1) 從功能上講,
    Get一般用來從服務器上獲取資源, POST一般用來更新服務器上的資源.
  • (2) 從REST服務角度上來說,
    GET是冪等的,即讀取同一個資源,總是得到相同的數據,
    而POST不是冪等的,爲每次請求對資源的改變並不是相同的;進一步的,Get不會改變服務器上的資源,而POST會對服務器資源進行改變.
  • (3) 從 請求參數形式上來看,
    Get請求的數據會附在URL之後,即將請求數據放在HTTP報文的請求頭中,以? 分割URL和傳輸數據,參數之間以&相連
    而POST請求會把提交的數據則放置在是HTTP請求報文的請求體中
  • (4) 就安全性而言
    POST的安全性要比GET的安全性高,因爲Get請求提交的數據將明文出現在URL上, 而且POST請求參數則被包裝到請求體中,相對更安全
  • (5) 從請求的大小看
    GET請求的長度受限於瀏覽器或服務器對URL長度的限制,允許發送的數據量比較小,
    而POST請求則是沒有大小限制的

GET和POST還有一個重大區別,簡單的說:GET產生一個TCP數據包;POST產生兩個TCP數據包。
長的說:對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);
而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
也就是說,GET只需要汽車跑一趟就把貨送到了,而POST得跑兩趟,第一趟,先去和服務器打個招呼“嗨,我等下要送一批貨來,你們打開門迎接我”,然後再回頭把貨送過去。

NO-8 Session、Cookie與Application

Cookie和Session 都是客戶端與服務器保持狀態的解決方法,具體來說, Cookie機制採用的是在客戶端保持狀態的方案,而Session 機制採用的是在服務器端保持狀態的方案.

1 Cookie

Cookie實際上是一小段的文本信息.
客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie,而客戶端瀏覽器會把Cookie保存起來.
當瀏覽器再請求該網站時, 瀏覽器把請求的網址連同該Cookie一同提交給服務器,服務器檢查該Cookie,以此來辨認用戶狀態.
服務器還可以根據需要修改Cookie的內容

2 Session

同樣的,會話狀態也可以保存在服務器端.
客戶端請求服務器,如果服務器記錄該用戶狀態,就獲取Session來保存狀態
此時,如果服務器已經爲此客戶創建過Session,服務器就按照Sessionid把這個Session檢索出來使用
如果客戶端請求不包含Sessionid,則爲此客戶端創建一個Session並且生成一個與此Session相關聯的Sessionid,並將這個Sessionid在本次相應中返回給客戶端保存

保存這個Sessionid的方式可以採用cookie機制,這樣在交互的過程中瀏覽器可以自動的按照規則把這個標識發送給服務器,
若瀏覽器禁用Cookie的話,可以通過URL重寫機制將Sessionid傳回服務器.

3 Cookie和Session的對比

  • (1) 實現機制
    Session的實現常常依賴於Cookie機制,通過Cookie機制回傳SessionID
  • (2)大小限制
    Cookie有大小限制並且瀏覽器對每個站點也有Cookie的個數限制;,Session沒有大小限制,理論上只與服務器的內存大小有關
  • (3) 安全性
    Cookie存在安全隱患,通過攔截或本地文件找到Cookie後可以進行攻擊,而Session 由於保存在服務器端,相對更加安全
  • (4) 服務器資源消耗
    Session 是保存在服務器端上會存在一段時間纔會小時,如果Session過多會增加服務器的壓力

4 Application

Application(java Web 中的ServletContext) :與一個Web應用程序相對應,爲應用程序提供了一個全局的狀態,所有客戶都可以使用該狀態。

NO-9 SQL注入

SQL注入是目前黑客最常用的攻擊手段,它的原理是利用數據庫對特殊標識符的解析強行從頁面向後臺傳入。改變SQL語句結構,達到擴展權限、創建高等級用戶、強行修改用戶資料等等操作。
SQL注入就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。

1 SQL注入攻擊的總體思路

(1)尋找SQL注入的位置
(2)判斷服務器類型和後臺數據庫類型
(3)針對不同的服務器和數據庫特點進行SQL注入攻擊

2 SQL注入攻擊實例

比如在一個登錄界面,要求輸入用戶名和密碼:

可以這樣輸入實現免帳號登錄:

用戶名: ‘or 1 = 1 –

密 碼:

點登陸,如若沒有做特殊處理,那麼這個非法用戶就很得意的登陸進去了.(當然現在的有些語言的數據庫API已經處理了這些問題)

這是爲什麼呢? 下面我們分析一下:

從理論上說,後臺認證程序中會有如下的SQL語句:

String sql = "select * from user_table where username=

’ “+userName+” ’ and password=’ “+password+” '";

當輸入了上面的用戶名和密碼,上面的SQL語句變成:

SELECT * FROM user_table WHERE username=
‘’or 1 = 1 – and password=’’

分析SQL語句:

條件後面username=”or 1=1 用戶名等於 ” 或1=1 那麼這個條件一定會成功;
然後後面加兩個-,這意味着註釋,它將後面的語句註釋,讓他們不起作用,這樣語句永遠都能正確執行,用戶輕易騙過系統,獲取合法身份。

這還是比較溫柔的,如果是執行

SELECT * FROM user_table WHERE

username=’’ ;DROP DATABASE (DB Name) --’ and password=’’

….其後果可想而知…

原文鏈接:https://blog.csdn.net/hxpjava1/article/details/81011334

3 應對方法

  • (1)參數綁定,使用預編譯語句
    使用預編譯手段,綁定參數是最好的防SQL注入的方法。
    目前許多的ORM框架及JDBC等都實現了SQL預編譯及參數綁定功能,攻擊者的惡意SQL會被當作SQL的參數而不是SQL命令被執行。
    在mybatis的mapper穩健者,對於傳遞的參數我們一般是使用#和KaTeX parse error: Expected 'EOF', got '#' at position 12: 來獲取參數值。 當使用#̲時,變量是佔位符,就是一般我們…時,變量就是直接追加在sql中,一般會有sql注入問題

  • (2) 使用正則表達式過濾傳入的參數

  • (3) 檢查變量數據類型和格式
    只要是固定格式的變量,在SQL語句執行前,應該嚴格按照固定格式檢查,確保變量是我們預想的格式!

NO-10 XSS攻擊

XSS是一種經常出現在web應用中的計算機安全漏洞,與SQL注入一起成爲web中最主流的攻擊方式。
XSS全稱cross-site scripting(跨站點腳本),是當前 web 應用中最危險和最普遍的漏洞之一。攻擊者向網頁中注入惡意腳本,當用戶瀏覽網頁時,腳本就會執行,進而影響用戶,比如關不完的網站、盜取用戶的 cookie 信息從而僞裝成用戶去操作,攜帶木馬等等

XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉移處理或者過濾不足的缺點, 進而添加一些腳本代碼嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。

1 XSS攻擊的危害

盜取各類的用戶賬號,如及其登陸賬號、用戶網銀賬號、各類管理賬號
控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力
盜竊企業重要的具有商業價值的資料
非法轉賬
強制發送電子郵件
網站掛馬
控制受害者機器向其他網站發起攻擊

2 XSS攻擊發生的原因解析

主要原因:過於信任客戶端提交的數據
解決辦法:不信任任何客戶端提交的數據,只要是客戶端提交的數據就應該先進行相應的過濾處理然後方可進行下一步的操作

進一步分析細節:
客戶端提交的數據本來就是應用所需要的,但是惡意攻擊者利用網站對客戶端提交數據的信任,在數據中插入一些符號以及javascript代碼,那麼這些數據將會成爲應用代碼中的一部分了,那麼攻擊者就可以肆無忌憚的展開攻擊啦,因此我們絕不可以信任任何客戶端提交的數據

3 XSS攻擊分類

  • (1) 反射性XSS攻擊(非持久性XSS攻擊)
    漏洞產生的原因是攻擊者注入的數據反映在響應中。

利用網站某些頁面會直接輸出請求參數的特性,通過在url的請求參數包含惡意腳本,誘使用戶點擊嵌入惡意腳本的url鏈接執行惡意腳本以達到攻擊的目的。目前有很多攻擊者利用論壇、微博發佈含有惡意腳本的URL就屬於這種方式。

一個典型的非持久性XSS攻擊包含一個帶XSS攻擊向量的鏈接(即每次攻擊需要用戶的點擊)。
例如,正常發送消息:
在這裏插入圖片描述

  • (2)存儲型XSS(持久性XSS攻擊)
    XSS攻擊向量(一般指XSS攻擊代碼)存儲在網站數據庫,當一個頁面被用戶打開的時候執行。
    也就是說,每個用戶使用瀏覽器打開指定頁面時,腳本便執行。
    與非持久性XSS攻擊相比,持久性XSS攻擊危害性更大,
    從名字就可以瞭解到,持久性XSS攻擊就是將攻擊代碼存入數據庫中 ,然後客戶端打開時就執行這些攻擊代碼。

通過表單輸入(比如發佈文章、回覆評論等功能中)插入一些惡意腳本,並且提交到被攻擊網站的服務器數據庫中。
當用戶瀏覽指定網頁時,惡意腳本從數據庫中被加載到頁面執行,QQ郵箱的早期版本就曾經被利用作爲持久型跨站腳本攻擊的平臺。
與反射型 XSS 相比,該類的攻擊更具有危害性,因爲它影響的不只是一個用戶,而是大量用戶,而且該種類型還可進行蠕蟲傳播。
在這裏插入圖片描述

-(3)DOM Based XSS(基於 dom 的跨站點腳本攻擊)
通過前面兩種類型的方式,注入的腳本是通過改變 DOM 來進行攻擊的。採用該種方式有一個好處就是從源代碼中不易被發現。

4 XSS攻擊防護防範

防範xss攻擊的原則就是不相信用戶輸入的數據,我們可以從倆方面入手:

(1)消毒(對危險字符進行轉義)
(2)HttpOnly(防範XSS攻擊者竊取Cookie數據)。

  • 消毒
    對數據進行轉義,比如<轉義成<,這樣腳本就運行不了了
    錄入數據設置白名單,比如javaWeb項目,設置過濾器過濾特殊字符
    前端頁面限制用戶輸入數據類型,比如用戶輸入完年齡後驗證輸入內容只能是數字。
    過濾JS事件的標籤,比如onclick、load等
  • HttpOnly
    將重要的cookie標記爲http only, 這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了

版權聲明:這一段是參考CSDN博主「卜可」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/q649381130/article/details/79571574

NO-11常見的狀態碼及原因短語

HTTP請求結構:請求方式+請求URL+協議及其版本
HTTP響應結構:狀態碼 + 原因短語 +協議及其版本

  • 1** :請求處理中,請求已被接受,正在處理

  • 2**:請求成功,請求被成功處理

  • 3**:重定向,要完成請求必須進一步處理
    301: 永久性轉移
    302:暫時性轉移
    304:已緩存

  • 4**:客戶端錯誤,請求不合法
    400 :Bad Request,請求有語法問題
    403:拒絕請求
    404:客戶端訪問的頁面不存在

  • 5**:服務器端錯誤,服務器不能處理合法請求
    500:服務器內部錯誤
    503:服務不可以,稍等

NO-11 IP地址的分類

IP地址是指互聯網協議地址,是IP協議提供的一種統一的地址格式,
它爲互聯網上的每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。

IP地址編址方案將IP地址空間劃分爲A,B,C,D,E五類,其中A,B,C是基本類,D,E作爲多播和保留使用,爲特殊地址。

每個IP地址包括兩個標識碼(ID)即網絡ID和主機ID。
同一個物理網絡上的所有主機都使用同一個網絡ID,
網絡上的一個主機(包括網絡上的工作站,服務器和路由器等)有一個主機ID與其對應。

A~~E類地址的特點如下:

  • A類地址:以0開頭,第一個字節範圍:0-127;
  • B類地址:以10開頭,第一個字節範圍:128-191
  • C類地址:以110開頭,第一個字節範圍:192-223
  • D類地址:以1110開頭,第一個字節範圍:224-239
  • E類地址:以1111開頭,保留地址

A類地址:1字節的網絡地址+3字節的主機地址,網絡地址的最高位必須是“0”

一個A類IP地址是指,在IP地址的四段號碼中,第一段號碼爲網絡號碼,剩下的三段號碼爲本地計算機的號碼
如果用二進制表示IP地址的話,A類IP地址就由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是“0”

A類IP地址中網絡的標識長度爲8位,主機標識的長度爲24位,
A類網絡地址數量較少,有126個網絡,每個網絡可容納主機數達1600多萬臺

A類地址的地址範圍1.0.0.0–127.255.255.255,最後一個是廣播地址
(二進制表示爲二進制表示爲:0000000100000000 00000000 00000001 - 01111110 11111111 11111111 11111110))
A類IP地址的子網掩碼爲255.0.0.0,每個網絡支持的最大主機數爲256的3次方 = 16777214臺。

B類地址:2字節的網絡地址 + 2字節的主機地址,網絡地址的最高位必須是“10”

一個B類地址是指,在IP地址的四段號碼中,前兩段號碼爲網絡號碼,剩下的兩段號碼爲本地計算機的號碼
如果用二進制表示IP地址的話,B類IP地址就由2字節的網絡地址和2字節的主機地址組成,網絡地址的最高位必須是“10”

B類IP地址中網絡的標識長度爲16位,主機標識的長度位16位,
B類網絡地址適用於中等規模的網絡,有16384個網絡,每個網絡所能容納的主機數爲6萬多臺

B類地址的地址範圍128.0.0.0 – 191.255.255.255,最後一個是廣播地址
(二進制表示爲:1000000000000001 00000000 00000001 - 10111111 11111110 11111111 11111111)
B類IP地址的子網掩碼爲255.255.0。0,每個網絡支持的最大主機數爲256的2次方 - 2 = 65534 臺

C 類地址:3字節的網絡地址 + 1字節主機地址,網絡地址的最高位必須是“110”

一個C類地址是指,在IP地址的四段號碼中,前三段號碼爲網絡號碼,剩下的一段號碼爲本地計算機的號碼。
如果用二進制表示IP地址的話,C類地址就由3字節的網絡地址和1字節主機地址組成,網絡地址的最高位必須是“110”

C類地址中網絡的表示長度爲24位,主機標識的長度爲8位,C類網絡地址數量較多,有209餘萬個網絡,
適用於小規模的局域網絡,每個網絡最多隻能包含254臺計算機。C類IP地址是局域網最常用的類型.

C類地址的地址範圍192.0.0.0 – 223.255.255.255
(二進制表示爲: 1100000000000000 00000001 00000001 - 11011111 11111111 11111110 11111111)
C類IP地址的子網掩碼爲255.255.255.0, 每個網絡支持的最大主機數爲256 - 2 = 254臺

D類地址:多播地址,用於1對多通信,最高位必須是“1110”

D類IP地址在歷史上被叫做多播地址(multicast address),即組播地址。
在以太網中,多播地址命名了一組應該在這個網絡中應用接收到一個分組的站點。
多播地址的最高位必須是“110”,範圍從224.0.0.0 – 239.255.255.255

D類地址用於多點廣播(Multicast)。

D類IP地址第一個字節以“lll0”開始,它是一個專門保留的地址。它並不指向特定的網絡,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協議的一組計算機。

D類地址多爲操作系統使用.

E類地址:爲保留地址,最高位必須是“1111”

本文來自諸多大佬的精華總結而成,僅做個人學習,如有錯誤,還請指正,謝謝您的不嗇賜教🙏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章