做網(wǎng)站遵義優(yōu)化師是一份怎樣的工作
文章目錄
- 前言
- 1. HTTP
- 1 . 1 協(xié)議特點
- 1 . 2 URL
- 1 . 3 Request請求報文
- 1 . 3 .1 請求行
- 1 . 3 .2 請求頭
- 1 . 3 .3 請求正文
- 1 . 3 .4 常見傳參方式
- 1 . 4 Response響應(yīng)報文
- 1 . 4 .1 響應(yīng)行
- 1 . 4 .2 響應(yīng)頭
- 1 . 4 .3 響應(yīng)正文
- 2. Web會話
- 2 .1 Cookie
- 2 .2 Session
- 2 .3 固定會話攻擊
前言
Web機制:客戶端
(用戶、瀏覽器)+ 服務(wù)端
(Web容器+中間件+數(shù)據(jù)庫)。
1. HTTP
? HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)是瀏覽器與服務(wù)端之間的通信協(xié)議。
? HTTP將HTML文檔傳輸?shù)絎eb歷覽器中進行訪問。HTTP是一個請求和響應(yīng)的協(xié)議,瀏覽器發(fā)出請求,服務(wù)端向請求做出回應(yīng)。
? HTTP在網(wǎng)絡(luò)中傳輸是以明文的形式,所以就會產(chǎn)生明文傳輸漏洞。為了解決這個問題,可以使用加強版的HTTPS協(xié)議,其在HTTP的基礎(chǔ)上加上了一個安全套接字層SSL,但也會存在如 HTTPS 降級等漏洞問題。
? HTTP 默認(rèn)端口為80
,HTTPS 默認(rèn)端口為 443
。
1 . 1 協(xié)議特點
? HTTP是一個請求和響應(yīng)的協(xié)議,瀏覽器發(fā)出請求,服務(wù)端向請求做出回應(yīng)。
- 采用B/S架構(gòu)模式(瀏覽器/服務(wù)器)
- 協(xié)議是無狀態(tài)的協(xié)議
- 瀏覽器向服務(wù)器發(fā)出請求時,只需傳輸
請求方法
和請求路徑
- 允許傳輸任意類型的數(shù)據(jù)對象
1 . 2 URL
? URL(Uniform Resource Locator,統(tǒng)一資源定位符),是全球唯一的,用來告訴Web容器,瀏覽器請求資源的路徑。
標(biāo)準(zhǔn)格式:
schema://login:password@address:port/path/to/resource/?query_string#fragment
URL參數(shù) | 說明 | 實例 |
---|---|---|
schema | 協(xié)議 | http |
login:password | 用戶名:密碼 | |
address | 服務(wù)器地址IP | 192.168.109.100 |
port | 端口號 | 80 |
path/to/resource | 請求資源路徑 | /cms/index.html |
query_string | 請求參數(shù) | name=dai |
fragment | 錨點 |
例子:
# http
http://192.168.109.100/cms/
# ftp
ftp://ftpuser:ftppassword@192.168.109.100
URL編碼:URL從Path
開始只能出現(xiàn)A-Za-z0-9
,-_.~
其他符號都會被URL編碼。
符號 | URL編碼 |
---|---|
# | %23 |
%20 | |
& | %26 |
> | %3e |
1 . 3 Request請求報文
HTTP 請求報文由 請求行、請求頭、請求正文 三部分組成。下面是一個完整的HTTP請求報文:
GET /cms/ HTTP/1.1
Host: 192.168.109.100
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.109.100/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close
1 . 3 .1 請求行
請求行是報文的第一行,由空格字符將其分為三部分,所以空格等字符不能隨便出現(xiàn)。
GET /cms/ HTTP/1.1
說明:
列數(shù) | 說明 | 例子 |
---|---|---|
1 | 請求方法 | GET |
2 | 資源路徑 | /cms/ |
3 | 協(xié)議版本 | HTTP/1.1 |
請求方法總結(jié):
請求方法 | 說明 |
---|---|
GET | 用于請求服務(wù)器發(fā)送某個資源 |
POST | 提交表單或上傳文件 |
HEAD | 請求資源,但只請求頭部,不請求正文 |
OPTIONS | 測試服務(wù)器所支持的方法 |
TRACE | 回顯瀏覽器的請求 |
PUT | 向服務(wù)器寫入文檔 |
DELETE | 請求服務(wù)器刪除指定資源 |
1 . 3 .2 請求頭
從請求報文第二行開始到第一個空行為止的內(nèi)容。請求頭包含了很多字段。
請求頭字段 | 說明 |
---|---|
Host | 指定被請求資源的服務(wù)器地址和端口號 |
User-Agent | 瀏覽器信息,瀏覽器指紋 |
Referer | 當(dāng)前URL的上一個URL |
Cookie | 請求者的身份信息,類似于身份證 |
Content-Type | 指明實體的介質(zhì)類型 |
Content-Length | 指明實體的正文長度 |
Authorization | 基本認(rèn)證 |
1 . 3 .3 請求正文
一般為POST方法,第一個空行以后的內(nèi)容。
1 . 3 .4 常見傳參方式
-
POST傳參
提交的參數(shù)放在請求正文中。
-
GET傳參
向服務(wù)器提交的參數(shù)存放在URL中,例如
?name=dai
,向服務(wù)器傳輸多個參數(shù)用& 連接。
1 . 4 Response響應(yīng)報文
響應(yīng)報文由 響應(yīng)行、響應(yīng)頭、響應(yīng)報文 三部分組成。下面是一個完整的HTTP響應(yīng)報文:
HTTP/1.1 200 OK
Date: Mon, 05 Aug 2024 02:43:55 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Content-Length: 7314
Connection: close
Content-Type: text/html; charset=utf-8<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
。。。。。
1 . 4 .1 響應(yīng)行
響應(yīng)報文的第一行。
HTTP/1.1 200 OK
說明:
列數(shù) | 說明 | 例子 |
---|---|---|
1 | 協(xié)議版本 | HTTP/1.1 |
2 | 響應(yīng)狀態(tài)碼 | 200 |
3 | 描述短句 | OK |
常見響應(yīng)狀態(tài)碼:
狀態(tài)碼 | 類型 | 常見狀態(tài)碼 |
---|---|---|
1XX | 信息性狀態(tài)碼 | – |
2XX | 成功狀態(tài)碼 | 200、201 |
3XX | 重定向狀態(tài)碼 | 302、304 |
4XX | 客戶端錯誤狀態(tài)碼 | 404、403 |
5XX | 服務(wù)端錯誤狀態(tài)碼 | 500 |
1 . 4 .2 響應(yīng)頭
從響應(yīng)報文第二行開始到第一個空行為止的內(nèi)容。響應(yīng)頭包含了很多字段。
Date: Mon, 05 Aug 2024 02:43:55 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Content-Length: 7314
Connection: close
Content-Type: text/html; charset=utf-8
說明:
響應(yīng)頭字段 | 說明 |
---|---|
Date | 時間 |
Server | Web服務(wù)器指紋 |
Refresh | 服務(wù)器端告知瀏覽器定時刷新瀏覽器 |
Content-Length | 正文長度 |
Connection | 連接 |
Content-Type | 響應(yīng)正文的類型 |
Set-Cookie | 服務(wù)器向瀏覽器端寫入Cookie信息 |
1 . 4 .3 響應(yīng)正文
瀏覽器接收到的HTML代碼,服務(wù)器返回的資源內(nèi)容。
2. Web會話
? 當(dāng)我們進行網(wǎng)購時,選擇商品、加入購物車、付款這一系列流程都是需要保持用戶登錄狀態(tài)的。Web會話技術(shù)就是用來管理Web應(yīng)用程序在多個頁面和請求之間保持用戶登錄狀態(tài)的一種技術(shù)。
? HTTP協(xié)議本身是無狀態(tài)的協(xié)議,所以HTTP協(xié)議不會記錄會話狀態(tài),不同的請求之間是沒有任何聯(lián)系的。所以我們希望在瀏覽器與服務(wù)器交互的這個會話期間,服務(wù)器可以保持對瀏覽器會話的識別,也就是保持HTTP的狀態(tài)。
2 .1 Cookie
? Cookie(Cookies)技術(shù)就是我們用來辨別用戶身份,進行會話跟蹤而存儲在本地終端上的一段文本。它由服務(wù)器在進行HTTP響應(yīng)的時候發(fā)送給瀏覽器,每當(dāng)瀏覽器向服務(wù)器發(fā)送請求的時候,它會自動將響應(yīng)的Cookie包含在請求中,如果服務(wù)器識別了這個自動發(fā)送的Cookie信息,那么服務(wù)器就識別了會話。
2 .2 Session
? Session 是一種可以保留更多信息在服務(wù)端的一種技術(shù),服務(wù)器會為每一個客戶端開辟一塊內(nèi)存空間(Session對象),客戶端在發(fā)送請求的時候,都可以使用之間的Session。
2 .3 固定會話攻擊
-
竊取
F12,在命令行執(zhí)行。
alter(document.cookie)
-
獲取到Cookie信息
username=admin; userid=1; PHPSESSID=mcm25gpg74qp4gpn9sv54tj754
-
進行欺騙
在沒有Cookie信息的時候,我們將這三條命令(根據(jù)Cookie進行替換)在命令行執(zhí)行,再次刷新就可以進去。
document.cookie = "username=admin;"; document.cookie = "userid=1;"; document.cookie = "PHPSESSID=mcm25gpg74qp4gpn9sv54tj754";