【2】web安全入門篇-瞭解web

1.什麼是web

百度百科會解是得很清楚,我在這裏就不贅述了
https://baike.baidu.com/item/Web/150564
web運行結構
在這裏插入圖片描述

2.一次完整的網頁請求

在這裏插入圖片描述
圖示大致流程爲
1.瀏覽器輸入url如www.baiduc.om
2.域名解析獲得該域名IP地址(DNS解析原理
3.與該域名建立TCP連接通過三次握手(三次握手原理)
4.封裝HTTP請求,向服務器發起HTTP請求(request)
5.服務器獲取HTTP請求中相應資源
6.資源獲取完成後web服務器做出應答(response),瀏覽器獲得服務器返回html(什麼是html)
7.斷開TCP連接通過四次握手(四次握手原理)
8.瀏覽器渲染呈現給用戶
瞭解了一次完整的web請求後便可繼續深入瞭解HTTP協議
如果對DNS解析,TCP三次握手,TCP四次握手原理已經瞭解,便可繼續往下看,深入學習http協議,如果不是建議先了解下這三個原理再繼續往下看

3.HTTP協議

HTTP協議既超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。它是一個客戶端和服務器端請求和應答的標準(TCP)。
詳細介紹
HTTP協議是基於TCP協議的應用層協議
學過計算機網絡的PY因該都知道在網絡世界中,數據是通過網絡傳輸協議傳送的,下面大致說一下TCP/IP協議架構
在這裏插入圖片描述
這裏列舉出了一個樹狀圖,TCP/IP協議分爲4層分別是鏈路層,網絡層,傳輸層,應用層

Network interfacae爲鏈路層:傳輸方式數據幀
ARP,IP,RARP等爲網絡層:傳輸方式數據包
TCP,UDP,ICMP等爲傳輸層:傳輸方式數據段
HTTP,FTP,SNMP等爲應用層:傳輸方式數據流

傳輸過程的結構組成大致如圖
在這裏插入圖片描述
這裏大概介紹了計算機網絡的基本知識,瞭解這些以後對HTTP應用層協議理解會更有幫助
下面我們就詳細介紹下HTTP協議,HTTP報文有兩種,一種是HTTP請求報文,一種是HTTP響應報文

3.1 HTTP請求報文

報文結構
在這裏插入圖片描述
請求例子
在這裏插入圖片描述
第一部分:第一行POST爲請求方法 /test爲請求文件 HTTP/1.1爲版本號
請求方法:GET,POST,HEAD,PUT,DELETE,OPTIONS,TRACE,CONNECT

GET: 向特定資源發出請求(請求指定頁面信息,並返回實體主體)
POST:向指定資源提交數據進行處理請求(提交表單、上傳文件),又可能導致新的資源的建立或原有資源的修改
HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
PUT:從客戶端向服務器傳送的數據取代指定的文檔的內容
DELETE:請求服務器刪除指定的頁面
OPTIONS:允許客戶端查看服務器的性能
TRACE:回顯服務器收到的請求,主要用於測試或診斷
CONNECT:HTTP/1.1協議中預留給能夠將連接改爲管道方式的代理服務器

GET和POST如果想學web安全個人認爲知道這一個區別就行了
1.GET請求時參數可以在URL中獲取如GET /test.php?id=1&username=xxx,而POST請求傳輸過程中數據是在data域,在URL中無法獲取
其他區別對於我們來說都不重要,如果想知道可自行百度

第二部分請求頭

Host:請求的服務器域名地址或IP地址
User-Agent:向訪問網站提供你所使用的瀏覽器類型及版本、操作系統及版本、瀏覽器內核、等信息的標識
Accept:表示瀏覽器端可以接受的媒體類型
Accept-Language:瀏覽器申明自己接收的語言
Accept-Encoding:瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支持壓縮,支持什麼壓縮方法(gzip,deflate)
Referer:代表請求來自哪個頁面
Content-Type:代表客戶端發送的實體數據的數據類型(如:text/html : HTML格式等)更多類型
Content-Length:發送給HTTP服務器數據的長度
Cookie:最重要的header, 將cookie的值發送給HTTP 服務器
Connection:keep-alive 當一個網頁打開完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接
close 代表一個Request完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP連接會關閉, 當客戶端再次發送Request,需要重新建立TCP連接

還有一些請求頭參數,這裏就不一一例舉後面遇到了再給大家介紹
第三部分,data區域POST向服務器傳送的數據

3.2 HTTP響應報文

在這裏插入圖片描述
響應例子
在這裏插入圖片描述
第一部分,響應行 HTTP/1.1爲版本 200爲狀態碼 OK爲狀態消息
狀態碼由三位數字組成,第一位數字表示響應的類型,常用的狀態碼有五大類如下所示:

1xx:表示服務器已接收了客戶端請求,客戶端可繼續發送請求;
2xx:表示服務器已成功接收到請求並進行處理;
3xx:表示服務器要求客戶端重定向;
4xx:表示客戶端的請求有非法內容;
5xx:表示服務器未能正常處理客戶端的請求而出現意外錯誤;

常用的狀態碼和狀態消息

 200 OK #客戶端請求成功 
    400 Bad Request #客戶端請求有語法錯誤,不能被服務器所理解 
    401 Unauthorized #請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用 
    403 Forbidden #服務器收到請求,但是拒絕提供服務 
    404 Not Found #請求資源不存在 
    500 Internal Server Error #服務器發生不可預期的錯誤 
    503 Server Unavailable #服務器當前不能處理客戶端的請求,一段時間後可能恢復正常

更多狀態碼
第二部分響應頭
Cache-Control:指定了請求和響應遵循的緩存機制
更多Cache-Control
Content-Type:服務器向客戶端返回內容類型,類型與請求頭相同
Vary:告訴緩存服務器使用什麼判斷一個請求的資源是fresh還是stale的
具體解釋該博客上解釋得比較清楚(大致意思爲,請求資源的依據Vary值)
Server:服務器處理請求的軟件版本
X-AspNet-Version:這個是服務器使用的.NET版本信息
Set-Cookie:服務器設置客戶端的cookie值
X-Powered-By:網站是用何種語言或框架編寫的,這裏是ASP.NET
Date:時間
Connection:連接狀態與請求報文相同
Content-Length:長度
第三部分,響應數據
例子中數據爲HTML代碼

到這裏web基礎知識基本完畢
如有錯誤或不足歡迎私信
郵箱:[email protected]
github:https://github.com/Gr3enh4nd

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