運(yùn)維必知的20個(gè)網(wǎng)絡(luò)安全知識(shí)點(diǎn)
共 13974字,需瀏覽 28分鐘
·
2024-05-23 08:00
什么是SQL注入攻擊
01
概述
攻擊者在 HTTP 請(qǐng)求中注入惡意的 SQL 代碼,服務(wù)器使用參數(shù)構(gòu)建數(shù)據(jù)庫(kù) SQL 命令時(shí),惡意SQL 被一起構(gòu)造,并在數(shù)據(jù)庫(kù)中執(zhí)行。
注入方法
用戶登錄,輸入用戶名 lianggzone,密碼 ‘ or ‘1’=’1 ,如果此時(shí)使用參數(shù)構(gòu)造的方式,就會(huì)出現(xiàn)
select * from user where name = ‘lianggzone’ and password = ‘’ or ‘1’=‘1’
不管用戶名和密碼是什么內(nèi)容,使查詢出來(lái)的用戶列表不為空。如何防范 SQL 注入攻擊使用預(yù)編譯的 PrepareStatement 是必須的,但是一般我們會(huì)從兩個(gè)方面同時(shí)入手。
Web端預(yù)防
有效性檢驗(yàn)。
限制字符串輸入的長(zhǎng)度。
服務(wù)端預(yù)防
不用拼接 SQL 字符串。
使用預(yù)編譯的 PrepareStatement。
有效性檢驗(yàn)。(為什么服務(wù)端還要做有效性檢驗(yàn)?第一準(zhǔn)則,外部都是不可信的,防止攻擊者繞過(guò) Web 端請(qǐng)求)
過(guò)濾 SQL 需要的參數(shù)中的特殊字符。比如單引號(hào)、雙引號(hào)。
什么是XSS攻擊
02
概述
跨站點(diǎn)腳本攻擊,指攻擊者通過(guò)篡改網(wǎng)頁(yè),嵌入惡意腳本程序,在用戶瀏覽網(wǎng)頁(yè)時(shí),控制用戶瀏覽器進(jìn)行惡意操作的一種攻擊方式。
如何防范XSS攻擊
前端,服務(wù)端,同時(shí)需要字符串輸入的長(zhǎng)度限制。
前端,服務(wù)端,同時(shí)需要對(duì) HTML 轉(zhuǎn)義處理。將其中的”<”,”>”等特殊字符進(jìn)行轉(zhuǎn)義編碼。
預(yù)防XSS 的核心是必須對(duì)輸入的數(shù)據(jù)做過(guò)濾處理。
CSRF攻擊
03
概述
跨站點(diǎn)請(qǐng)求偽造,指攻擊者通過(guò)跨站請(qǐng)求,以合法的用戶的身份進(jìn)行非法操作??梢赃@么理解 CSRF 攻擊:攻擊者盜用你的身份,以你的名義向第三方網(wǎng)站發(fā)送惡意請(qǐng)求。CRSF 能做的事情包括利用你的身份發(fā)郵件,發(fā)短信,進(jìn)行交易轉(zhuǎn)賬,甚至盜取賬號(hào)信息。
如何防范CSRF攻擊
安全框架,例如 Spring Security。
token機(jī)制:在 HTTP 請(qǐng)求中進(jìn)行 token 驗(yàn)證,如果請(qǐng)求中沒(méi)有 token 或者 token 內(nèi)容不正確,則認(rèn)為 CSRF 攻擊而拒絕該請(qǐng)求。
驗(yàn)證碼:通常情況下,驗(yàn)證碼能夠很好地遏制 CSRF 攻擊,但是很多情況下,出于用戶體驗(yàn)考慮,驗(yàn)證碼只能作為一種輔助手段,而不是最主要的解決方案。
referer 識(shí)別:在 HTTP Header 中有一個(gè)字段 Referer,它記錄了 HTTP 請(qǐng)求的來(lái)源地址。如果 Referer 是其他網(wǎng)站,就有可能是 CSRF 攻擊,則拒絕該請(qǐng)求。但是,服務(wù)器并非都能取到 Referer。很多用戶出于隱私保護(hù)的考慮,限制了 Referer 的發(fā)送。在某些情況下,瀏覽器也不會(huì)發(fā)送 Referer,例如 HTTPS 跳轉(zhuǎn)到 HTTP。
驗(yàn)證請(qǐng)求來(lái)源地址;
關(guān)鍵操作添加驗(yàn)證碼;
在請(qǐng)求地址添加 token 并驗(yàn)證。
文件上傳漏洞
04
概述
文件上傳漏洞,指的是用戶上傳一個(gè)可執(zhí)行的腳本文件,并通過(guò)此腳本文件獲得了執(zhí)行服務(wù)端命令的能力。
許多第三方框架、服務(wù),都曾經(jīng)被爆出文件上傳漏洞,比如很早之前的 Struts2,以及富文本編輯器等等,可被攻擊者上傳惡意代碼,有可能服務(wù)端就被人黑了。
如何防范文件上傳攻擊
判斷文件類型。在判斷文件類型的時(shí)候,可以結(jié)合使用 MIME Type,后綴檢查等方式。因?yàn)閷?duì)于上傳文件,不能簡(jiǎn)單地通過(guò)后綴名稱來(lái)判斷文件的類型,因?yàn)楣粽呖梢詫⒖蓤?zhí)行文件的后綴名稱改為圖片或其他后綴類型,誘導(dǎo)用戶執(zhí)行。
對(duì)上傳的文件類型進(jìn)行白名單校驗(yàn),只允許上傳可靠的類型。
上傳的文件需要進(jìn)行重新命名,使攻擊者無(wú)法猜想上傳文件的訪問(wèn)路徑,將極大地增加攻擊成本,同時(shí)向shell.php.rar.ara 這種文件,因?yàn)橹孛鵁o(wú)法成功實(shí)施攻擊。
限制上傳文件的大小。
單獨(dú)設(shè)置文件服務(wù)器的域名。
DDoS攻擊
05
概述
客戶端向服務(wù)端發(fā)送請(qǐng)求鏈接數(shù)據(jù)包,服務(wù)端向客戶端發(fā)送確認(rèn)數(shù)據(jù)包,客戶端不向服務(wù)端發(fā)送確認(rèn)數(shù)據(jù)包,服務(wù)器一直等待來(lái)自客戶端的確認(rèn)沒(méi)有徹底根治的辦法,除非不使用 TCP
DDos 預(yù)防:
限制同時(shí)打開 SYN 半鏈接的數(shù)目
縮短 SYN 半鏈接的 Time out 時(shí)間
關(guān)閉不必要的服務(wù)
ARP協(xié)議
06
概述
地址解析協(xié)議,即 ARP(Address Resolution Protocol),是根據(jù) IP 地址獲取物理地址的一個(gè)TCP/IP 協(xié)議。
發(fā)送 ARP 請(qǐng)求的以太網(wǎng)數(shù)據(jù)幀 廣播 到以太網(wǎng)上的每個(gè)主機(jī),ARP 請(qǐng)求幀中包含了目的主機(jī)的 IP 地址。
目的主機(jī)收到了該 ARP 請(qǐng)求之后,會(huì)發(fā)送一個(gè) ARP 應(yīng)答,里面包含了目的主機(jī)的 MAC 地址。
ARP 協(xié)議工作原理
每個(gè)主機(jī)都會(huì)在自己的 ARP 緩沖區(qū)中建立一個(gè) ARP 列表,以表示 IP 地址和 MAC 地址之間的對(duì)應(yīng)關(guān)系。
主機(jī)(網(wǎng)絡(luò)接口)新加入網(wǎng)絡(luò)時(shí)(也可能只是 mac 地址發(fā)生變化,接口重啟等), 會(huì)發(fā)送免費(fèi) ARP 報(bào)文把自己 IP 地址與 Mac 地址的映射關(guān)系廣播給其他主機(jī)。
網(wǎng)絡(luò)上的主機(jī)接收到免費(fèi) ARP 報(bào)文時(shí),會(huì)更新自己的 ARP 緩沖區(qū)。將新的映射關(guān)系更新到自己的 ARP 表中。
某個(gè)主機(jī)需要發(fā)送報(bào)文時(shí),首先檢查 ARP 列表中是否有對(duì)應(yīng) IP 地址的目的主機(jī)的 MAC地址,如果有,則直接發(fā)送數(shù)據(jù),如果沒(méi)有,就向本網(wǎng)段的所有主機(jī)發(fā)送 ARP 數(shù)據(jù)包,該數(shù)據(jù)包包括的內(nèi)容有:源主機(jī) IP 地址,源主機(jī) MAC 地址,目的主機(jī)的 IP 地址等。
當(dāng)本網(wǎng)絡(luò)的所有主機(jī)收到該 ARP 數(shù)據(jù)包時(shí):
首先檢查數(shù)據(jù)包中的 IP 地址是否是自己的 IP 地址,如果不是,則忽略該數(shù)據(jù)包。
如果是,則首先從數(shù)據(jù)包中取出源主機(jī)的 IP 和 MAC 地址寫入到 ARP 列表中,如果已經(jīng)存在,則覆蓋。
然后將自己的 MAC 地址寫入 ARP 響應(yīng)包中,告訴源主機(jī)自己是它想要找的 MAC地址。
源主機(jī)收到 ARP 響應(yīng)包后。將目的主機(jī)的 IP 和 MAC 地址寫入 ARP 列表,并利用此信息發(fā)送數(shù)據(jù)。如果源主機(jī)一直沒(méi)有收到 ARP 響應(yīng)數(shù)據(jù)包,表示 ARP 查詢失敗。ARP 高速緩存(即 ARP 表)是 ARP 地址解析協(xié)議能夠高效運(yùn)行的關(guān)鍵
如何防范ARP攻擊
1、MAC地址綁定
使網(wǎng)絡(luò)中每一臺(tái)計(jì)算機(jī)的IP地址與硬件地址一一對(duì)應(yīng),不可更改。
2、使用靜態(tài)ARP緩存
用手工方法更新緩存中的記錄,使ARP欺騙無(wú)法進(jìn)行。
3、使用ARP服務(wù)器
通過(guò)該服務(wù)器查找自己的ARP轉(zhuǎn)換表來(lái)響應(yīng)其他機(jī)器的ARP廣播。確保這臺(tái)ARP服務(wù)器不被黑。
4、使用ARP欺騙防護(hù)軟件:
如ARP防火墻
5、及時(shí)發(fā)現(xiàn)正在進(jìn)行ARP欺騙的主機(jī)并將其隔離
6、使用最新版本DNS服務(wù)器軟件并及時(shí)安裝補(bǔ)丁
7、關(guān)閉DNS服務(wù)器的遞歸功能
DNS服務(wù)器利用緩存中的記錄信息回答查詢請(qǐng)求或是DNS服務(wù)器通過(guò)查詢其它服務(wù)器獲得查詢信息并將它發(fā)送給客戶機(jī),這兩種查詢方式稱為遞歸查詢,這種查詢方式容易導(dǎo)致DNS欺騙。
8、限制區(qū)域傳輸范圍
限制域名服務(wù)器做出響應(yīng)的地址、限制域名服務(wù)器做出響應(yīng)的遞歸請(qǐng)求地址、限制發(fā)出請(qǐng)求的地址。
9、限制動(dòng)態(tài)更新
10、采用分層的DNS體系結(jié)構(gòu)
11、檢查源代碼
如果發(fā)生了URL重定向,就一定會(huì)發(fā)現(xiàn)。不過(guò),檢查用戶連接的每一個(gè)頁(yè)面的源代碼對(duì)普通用戶來(lái)說(shuō)是不切實(shí)際的想法。
12、確保應(yīng)用有效和能適當(dāng)?shù)馗櫽脩?/strong>
無(wú)論是使用cookie還是會(huì)話ID,都應(yīng)該確保要盡可能的長(zhǎng)和隨機(jī)。
RARP工作原理
07
反向地址轉(zhuǎn)換協(xié)議,網(wǎng)絡(luò)層協(xié)議,RARP 與 ARP 工作方式相反。RARP 使只知道自己硬件地址的主機(jī)能夠知道其 IP 地址。RARP 發(fā)出要反向解釋的物理地址并希望返回其 IP地址,應(yīng)答包括能夠提供所需信息的 RARP 服務(wù)器發(fā)出的 IP 地址。
原理:
網(wǎng)絡(luò)上的每臺(tái)設(shè)備都會(huì)有一個(gè)獨(dú)一無(wú)二的硬件地址,通常是由設(shè)備廠商分配的MAC地址。主機(jī)從網(wǎng)卡上讀取 MAC 地址,然后在網(wǎng)絡(luò)上發(fā)送一個(gè) RARP 請(qǐng)求的廣播數(shù)據(jù)包,請(qǐng)求 RARP服務(wù)器回復(fù)該主機(jī)的 IP 地址。
RARP 服務(wù)器收到了 RARP 請(qǐng)求數(shù)據(jù)包,為其分配 IP 地址,并將 RARP 回應(yīng)發(fā)送給主機(jī)。
PC1 收到 RARP 回應(yīng)后,就使用得到的 IP 地址進(jìn)行通訊。
DNS工作原理
08
將主機(jī)域名轉(zhuǎn)換為 ip 地址,屬于應(yīng)用層協(xié)議,使用 UDP 傳輸。
過(guò)程:
總結(jié):瀏覽器緩存,系統(tǒng)緩存,路由器緩存,IPS 服務(wù)器緩存,根域名服務(wù)器緩存,頂級(jí)域名服務(wù)器緩存,主域名服務(wù)器緩存。
兩種查詢方式
主機(jī)向本地域名服務(wù)器的查詢一般都是采用遞歸查詢。
本地域名服務(wù)器向根域名服務(wù)器的查詢的迭代查詢。
當(dāng)用戶輸入域名時(shí),瀏覽器先檢查自己的緩存中是否有這個(gè)域名映射的 ip 地址,如果有解析結(jié)束。
若沒(méi)命中,則檢查操作系統(tǒng)緩存(如 Windows 的 hosts)中有沒(méi)有解析過(guò)的結(jié)果,有解析結(jié)束。
若無(wú)命中,則請(qǐng)求本地域名服務(wù)器解析( LDNS)。
若 LDNS 沒(méi)有命中就直接跳到根域名服務(wù)器請(qǐng)求解析。根域名服務(wù)器返回給 LDNS一個(gè) 主域名服務(wù)器地址。
此時(shí) LDNS 再發(fā)送請(qǐng)求給上一步返回的 gTLD( 通用頂級(jí)域), 接受請(qǐng)求的 gTLD 查找并返回這個(gè)域名對(duì)應(yīng)的 Name Server 的地址
Name Server 根據(jù)映射關(guān)系表找到目標(biāo) ip,返回給 LDNS
LDNS 緩存這個(gè)域名和對(duì)應(yīng)的 ip, 把解析的結(jié)果返回給用戶,用戶根據(jù) TTL 值緩存到本地系統(tǒng)緩存中,域名解析過(guò)程至此結(jié)束
DNS攻擊
DNS攻擊防范
安全更新:及時(shí)升級(jí)所有相關(guān)軟件和操作系統(tǒng)補(bǔ)丁,并確保所有設(shè)備都有最新版本的安全防護(hù)軟件。
配置正確的權(quán)限:只給予必要用戶相應(yīng)權(quán)限,并禁止使用弱密碼進(jìn)行登錄。
加密傳輸:使用加密技術(shù)(例如SSL / TLS)來(lái)保護(hù)敏感數(shù)據(jù)在傳輸過(guò)程中不受干擾或泄露。
多層次驗(yàn)證機(jī)制: 在登錄系統(tǒng)前先經(jīng)過(guò)多重身份驗(yàn)證, 以此增強(qiáng)賬戶安全性
增加容錯(cuò)機(jī)制: 對(duì)于核心業(yè)務(wù)建立冷備和熱備,在一旦發(fā)生故障時(shí),可以快速切換到備份系統(tǒng)上,降低業(yè)務(wù)中斷的風(fēng)險(xiǎn)。
RIP的工作原理
09
RIP 動(dòng)態(tài)路由選擇協(xié)議(網(wǎng)絡(luò)層協(xié)議)
RIP 是一種基于距離矢量(Distance-Vector)算法的協(xié)議,它使用跳數(shù)(Hop Count)作為度量來(lái)衡量到達(dá)目的網(wǎng)絡(luò)的路由距離。RIP 通過(guò) UDP 報(bào)文進(jìn)行路由信息的交換,使用的端口號(hào)為 520。
工作原理:
RIP 路由協(xié)議用“更新(UNPDATES)”和“請(qǐng)求(REQUESTS)”這兩種分組來(lái)傳輸信息的。每個(gè)具有 RIP 協(xié)議功能的路由器每隔 30 秒用 UDP520 端口給與之直接相連的機(jī)器廣播更新信息。并且在(用“路程段數(shù)”(即“跳數(shù)”)作為網(wǎng)絡(luò)距離的尺度。每個(gè)路由器在)給相鄰路由器發(fā)出路由信息時(shí),都會(huì)給每個(gè)路徑加上內(nèi)部距離
路由器的收斂機(jī)制:
任何距離向量路由選擇協(xié)議(如 RIP)都有一個(gè)問(wèn)題,路由器不知道網(wǎng)絡(luò)的全局情況,路由器必須依靠相鄰路由器來(lái)獲取網(wǎng)絡(luò)的可到達(dá)信息。由于路由選擇更新信息在網(wǎng)絡(luò)上傳播慢,距離向量路由選擇算法有一個(gè)慢收斂問(wèn)題,這個(gè)問(wèn)題將導(dǎo)致不一致性產(chǎn)生。
RIP 較少路由收斂機(jī)制帶來(lái)的問(wèn)題:
記數(shù)到無(wú)窮大機(jī)制:RIP 協(xié)議允許最大跳數(shù)為 15。大于 15 的目的地被認(rèn)為是不可達(dá)。當(dāng)路徑的跳數(shù)超過(guò) 15,這條路徑才從路由表中刪除。
水平分割法:路由器不向路徑到來(lái)的方向回傳此路徑。當(dāng)打開路由器接口后,路由器記錄路徑是從哪個(gè)接口來(lái)的,并且不向此接口回傳此路徑。
破壞逆轉(zhuǎn)的水平分割法:忽略在更新過(guò)程中從一個(gè)路由器獲取的路徑又傳回該路由器
保持定時(shí)器法:防止路由器在路徑從路由表中刪除后一定的時(shí)間內(nèi)(通常為 180 秒)接受新的路由信息。保證每個(gè)路由器都收到了路徑不可達(dá)信息
觸發(fā)更新法: 當(dāng)某個(gè)路徑的跳數(shù)改變了,路由器立即發(fā)出更新信息,不管路由器是否到達(dá)常規(guī)信息更新時(shí)間都發(fā)出更新信息。
RIP的特點(diǎn)
由于15跳為最大值,RIP 只能應(yīng)用于小規(guī)模網(wǎng)絡(luò);
收斂速度慢;
根據(jù)跳數(shù)選擇的路由,不一定是最優(yōu)路由。
OSPF 協(xié)議?OSPF 的工作原理
OSPF(Open Shortest Pass First,開放最短路徑優(yōu)先協(xié)議),是一個(gè)最常用的內(nèi)部網(wǎng)管協(xié)議,是一個(gè)鏈路狀態(tài)協(xié)議。(網(wǎng)絡(luò)層協(xié)議,)
原理:
OSPF 組播的方式在所有開啟 OSPF 的接口發(fā)送 Hello 包,用來(lái)確定是否有 OSPF 鄰居,若發(fā)現(xiàn)了,則建立 OSPF 鄰居關(guān)系,形成鄰居表,之后互相發(fā)送 LSA(鏈路狀態(tài)通告)相互通告路由,形成 LSDB(鏈路狀態(tài)數(shù)據(jù)庫(kù))。再通過(guò) SPF 算法,計(jì)算最佳路徑(cost 最?。┖蠓湃肼酚杀?/span>
TCP與UDP區(qū)別
10
TCP 面向連接(如打電話要先撥號(hào)建立連接)提供可靠的服務(wù);UDP 是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接,;UDP 盡最大努力交付,即不保證可靠交付。(由于 UDP 無(wú)需建立連接,因此 UDP 不會(huì)引入建立連接的時(shí)延,TCP 需要在端系統(tǒng)中維護(hù)連接狀態(tài),比如接受和發(fā)送緩存,擁塞控制,序號(hào)與確認(rèn)號(hào)的參數(shù)等,故 TCP 會(huì)比 UDP 慢)
UDP 具有較好的實(shí)時(shí)性,工作效率比 TCP 高,適用于對(duì)高速傳輸和實(shí)時(shí)性有較高的通信或廣播通信。
每一條 TCP 連接只能是一對(duì)一的;UDP 支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多的交互通信
UDP 分組首部開銷小,TCP 首部開銷 20 字節(jié);UDP 的首部開銷小,只有 8 個(gè)字節(jié)。
TCP 面向字節(jié)流,實(shí)際上是 TCP 把數(shù)據(jù)看成一連串無(wú)結(jié)構(gòu)的字節(jié)流;UDP 是面向報(bào)文的(一次交付一個(gè)完整的報(bào)文,報(bào)文不可分割,報(bào)文是 UDP 數(shù)據(jù)報(bào)處理的最小單位)。
UDP 適合一次性傳輸較小數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用,如 DNS,SNMP 等
什么是三次握手四次揮手?tcp 為什么要三次握手?
為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端,因而產(chǎn)生錯(cuò)誤
第一次握手:建立連接時(shí),客戶端發(fā)送 syn 包(syn=j)到服務(wù)器,并進(jìn)入 SYN_SEND 狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到 syn 包,必須確認(rèn)客戶的 SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN 包(syn=k),即 SYN+ACK 包,此時(shí)服務(wù)器進(jìn)入 SYN_RECV 狀態(tài);
第三次握手:客戶端收到服務(wù)器的 SYN+ACK 包,向服務(wù)器發(fā)送確認(rèn)包 ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入 ESTABLISHED 狀態(tài),完成三次握手。
完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)
四次揮手
客戶端先發(fā)送 FIN,進(jìn)入 FIN_WAIT1 狀態(tài),用來(lái)關(guān)閉 Client 到 Server 的數(shù)據(jù)傳送服務(wù)端收到 FIN,發(fā)送 ACK,進(jìn)入 CLOSE_WAIT 狀態(tài),客戶端收到這個(gè) ACK,進(jìn)入 FIN_WAIT2狀態(tài)。
服務(wù)端發(fā)送 FIN,進(jìn)入 LAST_ACK 狀態(tài),用來(lái)關(guān)閉 Server 到 Client 的數(shù)據(jù)傳送客戶端收到 FIN,發(fā)送 ACK,進(jìn)入 TIME_WAIT 狀態(tài),服務(wù)端收到 ACK,進(jìn)入 CLOSE 狀態(tài)(等待 2MSL 時(shí)間,約 4 分鐘。主要是防止最后一個(gè) ACK 丟失。)
第一次揮手:主動(dòng)關(guān)閉方發(fā)送一個(gè) FIN,用來(lái)關(guān)閉主動(dòng)方到被動(dòng)關(guān)閉方的數(shù)據(jù)傳送,也就是主動(dòng)關(guān)閉方告訴被動(dòng)關(guān)閉方:我已經(jīng)不 會(huì)再給你發(fā)數(shù)據(jù)了(當(dāng)然,在 fin 包之前發(fā)送出去的數(shù)據(jù),如果沒(méi)有收到對(duì)應(yīng)的 ack 確認(rèn)報(bào)文,主動(dòng)關(guān)閉方依然會(huì)重發(fā)這些數(shù)據(jù)),但是,此時(shí)主動(dòng)關(guān)閉方還可 以接受數(shù)據(jù)。
第二次揮手:被動(dòng)關(guān)閉方收到 FIN 包后,發(fā)送一個(gè) ACK 給對(duì)方,確認(rèn)序號(hào)為收到序號(hào)+1(與SYN 相同,一個(gè) FIN 占用一個(gè)序號(hào))。
第三次揮手:被動(dòng)關(guān)閉方發(fā)送一個(gè) FIN,用來(lái)關(guān)閉被動(dòng)關(guān)閉方到主動(dòng)關(guān)閉方的數(shù)據(jù)傳送,也就是告訴主動(dòng)關(guān)閉方,我的數(shù)據(jù)也發(fā)送完了,不會(huì)再給你發(fā)數(shù)據(jù)了。
第四次揮手:主動(dòng)關(guān)閉方收到 FIN 后,發(fā)送一個(gè) ACK 給被動(dòng)關(guān)閉方,確認(rèn)序號(hào)為收到序號(hào)+1,至此,完成四次揮手。
GET和POST的區(qū)別
11
get 是獲取數(shù)據(jù),post 是修改數(shù)據(jù)
get 把請(qǐng)求的數(shù)據(jù)放在 url 上, 以?分割 URL 和傳輸數(shù)據(jù),參數(shù)之間以&相連,所以 get 不太安全。而 post 把數(shù)據(jù)放在 HTTP 的包體內(nèi)(requrest body)get 提交的數(shù)據(jù)最大是 2k( 限制實(shí)際上取決于瀏覽器), post 理論上沒(méi)有限制。
GET 產(chǎn)生一個(gè) TCP 數(shù)據(jù)包,瀏覽器會(huì)把 http header 和 data 一并發(fā)送出去,服務(wù)器響應(yīng) 200(返回?cái)?shù)據(jù)); POST 產(chǎn)生兩個(gè) TCP 數(shù)據(jù)包,瀏覽器先發(fā)送 header,服務(wù)器響應(yīng) 100 continue,瀏覽器再發(fā)送 data,服務(wù)器響應(yīng) 200 ok(返回?cái)?shù)據(jù))。
GET 請(qǐng)求會(huì)被瀏覽器主動(dòng)緩存,而 POST 不會(huì),除非手動(dòng)設(shè)置。
GET 是冪等的,而 POST 不是冪等的
Cookies 和 session 區(qū)別
Cookie 和 Session 都是客戶端與服務(wù)器之間保持狀態(tài)的解決方案
存儲(chǔ)的位置不同,cookie:存放在客戶端,session:存放在服務(wù)端。Session 存儲(chǔ)的數(shù)據(jù)比較安全
存儲(chǔ)的數(shù)據(jù)類型不同
兩者都是 key-value 的結(jié)構(gòu),但針對(duì) value 的類型是有差異的cookie:value 只能是字符串類型,session:value 是 Object 類型
3. 存儲(chǔ)的數(shù)據(jù)大小限制不同
cookie:大小受瀏覽器的限制,很多是 4K 的大小, session:理論上受當(dāng)前內(nèi)存的限制,
4,生命周期的控制
cookie 的生命周期當(dāng)瀏覽器關(guān)閉的時(shí)候,就消亡了
cookie 的生命周期是累計(jì)的,從創(chuàng)建時(shí),就開始計(jì)時(shí),20 分鐘后,cookie 生命周期結(jié)束,
session 的生命周期是間隔的,從創(chuàng)建時(shí),開始計(jì)時(shí)如在 20 分鐘,沒(méi)有訪問(wèn) session,那么 session 生命周期被銷毀
Session的工作原理
12
session 的工作原理是客戶端登錄完成之后,服務(wù)器會(huì)創(chuàng)建對(duì)應(yīng)的 session,session 創(chuàng)建完之后,會(huì)把 session 的 id 發(fā)送給客戶端,客戶端再存儲(chǔ)到瀏覽器中。這樣客戶端每次訪問(wèn)服務(wù)器時(shí),都會(huì)帶著 sessionid,服務(wù)器拿到 sessionid 之后,在內(nèi)存找到與之對(duì)應(yīng)的 session這樣就可以正常工作了。
一次完整的HTTP請(qǐng)求過(guò)程
13
域名解析
發(fā)起 TCP 的 3 次握手
建立 TCP 連接后發(fā)起 http 請(qǐng)求
服務(wù)器響應(yīng) http請(qǐng)求,瀏覽器得到 html 代碼
瀏覽器解析 html 代碼,并請(qǐng)求 html 代碼中的資源(如 js、css、圖片等)瀏覽器對(duì)頁(yè)面進(jìn)行渲染呈現(xiàn)給用戶。
HTTPS和HTTP的區(qū)別
14
HTTP 協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用 HTTP 協(xié)議傳輸隱私信息非常不安全, HTTPS 協(xié)議是由 SSL+HTTP 協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比 http 協(xié)議安全。
https 協(xié)議需要到 ca 申請(qǐng)證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。
http 和 https 使用的是完全不同的連接方式,用的端口也不一樣,前者是 80,后者是 443。https://www.cnblogs.com/mywe/p/5407468.html
OSI的七層模型
15
物理層:利用傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,實(shí)現(xiàn)比特流的透明傳輸。
數(shù)據(jù)鏈路層:接收來(lái)自物理層的位流形式的數(shù)據(jù),并封裝成幀,傳送到上一層
網(wǎng)絡(luò)層:將網(wǎng)絡(luò)地址翻譯成對(duì)應(yīng)的物理地址,并通過(guò)路由選擇算法為分組通過(guò)通信子網(wǎng)選擇最適當(dāng)?shù)穆窂健?/span>
傳輸層:在源端與目的端之間提供可靠的透明數(shù)據(jù)傳輸
會(huì)話層:負(fù)責(zé)在網(wǎng)絡(luò)中的兩節(jié)點(diǎn)之間建立、維持和終止通信
表示層:處理用戶信息的表示問(wèn)題,數(shù)據(jù)的編碼,壓縮和解壓縮,數(shù)據(jù)的加密和解密
應(yīng)用層:為用戶的應(yīng)用進(jìn)程提供網(wǎng)絡(luò)通信服務(wù)
HTTP長(zhǎng)連接和短連接的區(qū)別
16
在 HTTP/1.0 中默認(rèn)使用短連接。也就是說(shuō),客戶端和服務(wù)器每進(jìn)行一次 HTTP 操作,就建立一次連接,任務(wù)結(jié)束就中斷連接。而從 HTTP/1.1 起,默認(rèn)使用長(zhǎng)連接,用以保持連接特性。什么是 TCP粘包/拆包?發(fā)生原因?解決方案 一個(gè)完整的業(yè)務(wù)可能會(huì)被 TCP 拆分成多個(gè)包進(jìn)行發(fā)送,也有可能把多個(gè)小的包封裝成一個(gè)大的數(shù)據(jù)包發(fā)送,這個(gè)就是 TCP 的拆包和粘包問(wèn)題。
原因:
應(yīng)用程序?qū)懭霐?shù)據(jù)的字節(jié)大小大于套接字發(fā)送緩沖區(qū)的大小.
進(jìn)行MSS 大小的 TCP分段。( MSS=TCP 報(bào)文段長(zhǎng)度-TCP 首部長(zhǎng)度)3. 以太網(wǎng)的 payload 大于 MTU進(jìn)行 IP 分片。( MTU 指:一種通信協(xié)議的某一層上面所能通過(guò)的最大數(shù)據(jù)包大小。)
解決方案:
消息定長(zhǎng)。
在包尾部增加回車或者空格符等特殊字符進(jìn)行分割
將消息分為消息頭和消息尾。
使用其它復(fù)雜的協(xié)議,如 RTMP 協(xié)議等。
TCP如何保證可靠傳輸
17
三次握手。
將數(shù)據(jù)截?cái)酁楹侠淼拈L(zhǎng)度。應(yīng)用數(shù)據(jù)被分割成 TCP 認(rèn)為最適合發(fā)送的數(shù)據(jù)塊(按字節(jié)編號(hào),合理分片)
超時(shí)重發(fā)。當(dāng) TCP 發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,如果不能及時(shí)收到一個(gè)確認(rèn)就重發(fā)
確認(rèn)應(yīng)答:對(duì)于收到的請(qǐng)求,給出確認(rèn)響應(yīng)
校驗(yàn)和:校驗(yàn)出包有錯(cuò),丟棄報(bào)文段,不給出響應(yīng)
序列號(hào):對(duì)失序數(shù)據(jù)進(jìn)行重新排序,然后才交給應(yīng)用層
丟棄重復(fù)數(shù)據(jù):對(duì)于重復(fù)數(shù)據(jù) , 能夠丟棄重復(fù)數(shù)據(jù)
流量控制。TCP 連接的每一方都有固定大小的緩沖空間。TCP 的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出。擁塞控制。當(dāng)網(wǎng)絡(luò)擁塞時(shí),減少數(shù)據(jù)的發(fā)送。
校驗(yàn)和
序列號(hào)
確認(rèn)應(yīng)答
超時(shí)重傳
連接管理
流量控制
擁塞控制
常見的狀態(tài)碼
18
200:OK 客戶端請(qǐng)求成功 403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
404:Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的 URL
500:Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤 URI 和 URL 的區(qū)別 URI,統(tǒng)一資源標(biāo)識(shí)符,用來(lái)唯一的標(biāo)識(shí)一個(gè)資源。URL 可以用來(lái)標(biāo)識(shí)一個(gè)資源,而且還指明了如何定位這個(gè)資源。
什么是SSL
19
SSL 代表安全套接字層。它是一種用于加密和驗(yàn)證應(yīng)用程序(如瀏覽器)和 Web 服務(wù)器之間發(fā)送的數(shù)據(jù)的協(xié)議。身份驗(yàn)證 , 加密 Https 的加密機(jī)制是一種共享密鑰加密和公開密鑰加密并用的混合加密機(jī)制。
SSL/TLS 協(xié)議作用
認(rèn)證用戶和服務(wù),加密數(shù)據(jù),維護(hù)數(shù)據(jù)的完整性的應(yīng)用層協(xié)議加密和解密需要兩個(gè)不同的密鑰,故被稱為非對(duì)稱加密;
加密和解密都使用同一個(gè)密鑰的 對(duì)稱加密。優(yōu)點(diǎn)在于加密、解密效率通常比較高 HTTPS 是基于非對(duì)稱加密的, 公鑰是公開的
客戶端向服務(wù)器端發(fā)起 SSL 連接請(qǐng)求;
服務(wù)器把公鑰發(fā)送給客戶端,并且服務(wù)器端保存著唯一的私鑰
客戶端用公鑰對(duì)雙方通信的對(duì)稱秘鑰進(jìn)行加密,并發(fā)送給服務(wù)器端
服務(wù)器利用自己唯一的私鑰對(duì)客戶端發(fā)來(lái)的對(duì)稱秘鑰進(jìn)行解密,
進(jìn)行數(shù)據(jù)傳輸,服務(wù)器和客戶端雙方用公有的相同的對(duì)稱秘鑰對(duì)數(shù)據(jù)進(jìn)行加密解密,
可以保證在數(shù)據(jù)收發(fā)過(guò)程中的安全,即是第三方獲得數(shù)據(jù)包,也無(wú)法對(duì)其進(jìn)行加密,解密和篡改。
數(shù)字簽名
因?yàn)閿?shù)字簽名、摘要是證書防偽非常關(guān)鍵的武器。“摘要”就是對(duì)傳輸?shù)膬?nèi)容,通過(guò) hash算法計(jì)算出一段固定長(zhǎng)度的串。然后,在通過(guò) CA 的私鑰對(duì)這段摘要進(jìn)行加密,加密后得到的結(jié)果就是“數(shù)字簽名”
SSL/TLS 協(xié)議的基本思路是采用公鑰加密法,也就是說(shuō),客戶端先向服務(wù)器端索要公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密。
如何保證公鑰不被篡改?
將公鑰放在數(shù)字證書中。只要證書是可信的,公鑰就是可信的。
公鑰加密計(jì)算量太大,如何減少耗用的時(shí)間?
每一次對(duì)話(session),客戶端和服務(wù)器端都生成一個(gè)"對(duì)話密鑰"(session key),用它來(lái)加密信息。由于"對(duì)話密鑰"是對(duì)稱加密,所以運(yùn)算速度非??欤?wù)器公鑰只用于加密"對(duì)話密鑰"本身,這樣就減少了加密運(yùn)算的消耗時(shí)間。
(1) 客戶端向服務(wù)器端索要并驗(yàn)證公鑰。
(2) 雙方協(xié)商生成"對(duì)話密鑰"。
(3) 雙方采用"對(duì)話密鑰"進(jìn)行加密通信。上面過(guò)程的前兩步,又稱為"握手階段"(handshake)。
SSL 工作過(guò)程
A:客戶端,B:服務(wù)器端
協(xié)商加密算法:A 向 B 發(fā)送 SSL 版本號(hào)和可選加密算法,B 選擇自己支持的算法并告知 A
服務(wù)器鑒別:B 向 A 發(fā)送包含公鑰的數(shù)字證書,A 使用 CA 公開發(fā)布的公鑰對(duì)證書進(jìn)行驗(yàn)證
會(huì)話密鑰計(jì)算:A 產(chǎn)生一個(gè)隨機(jī)秘密數(shù),用 B 的公鑰進(jìn)行加密后發(fā)送給 B,B 根據(jù)協(xié)商的算法產(chǎn)生共享的對(duì)稱會(huì)話密鑰并發(fā)送給 A.
安全數(shù)據(jù)傳輸:雙方用會(huì)話密鑰加密和解密它們之間傳送的數(shù)據(jù)并驗(yàn)證其完整性
TCP對(duì)應(yīng)的應(yīng)用層協(xié)議
20
FTP:定義了文件傳輸協(xié)議,使用 21 端口.
Telnet:它是一種用于遠(yuǎn)程登陸的端口,23 端口
SMTP:定義了簡(jiǎn)單郵件傳送協(xié)議,服務(wù)器開放的是 25 號(hào)端口。
POP3:它是和 SMTP 對(duì)應(yīng),POP3 用于接收郵件。
HTTP
UDP 對(duì)應(yīng)的應(yīng)用層協(xié)議
DNS:用于域名解析服務(wù),用的是 53 號(hào)端口
SNMP:簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,使用 161 號(hào)端口
TFTP(Trival File Transfer Protocal):簡(jiǎn)單文件傳輸協(xié)議,69
文章轉(zhuǎn)自威努特工控安全
