日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议)

發(fā)布時(shí)間:2025/3/15 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

Web 工作機(jī)制

網(wǎng)頁、網(wǎng)站

Web容器

靜態(tài)頁面

中間件服務(wù)器

數(shù)據(jù)庫(kù)的出現(xiàn)

建立一個(gè)網(wǎng)站

HTTP 協(xié)議概述

概述

特點(diǎn)

URL

HTTP 報(bào)文分析

HTTP 工作模式

REQUEST

請(qǐng)求報(bào)文,如下

實(shí)驗(yàn)

RESPONSE

響應(yīng)報(bào)文如下:

狀態(tài)碼

主要字段

同源策略的條件

同源策略的探究

準(zhǔn)備兩個(gè)頁面


為什么學(xué)習(xí)這節(jié)課

我們學(xué)習(xí)滲透測(cè)試這門課程,主要針對(duì)的Web應(yīng)用,所以對(duì)Web 架構(gòu)需要一定的了解

上網(wǎng)瀏覽網(wǎng)站的所有東西:

??????????????????????????? ? ????

Web 工作機(jī)制

網(wǎng)頁、網(wǎng)站

我么可通過瀏覽器上網(wǎng)看到精美的頁面,一般都是經(jīng)過瀏覽器渲染的.html 頁面,其中包含css 等前端技術(shù)。多個(gè)網(wǎng)頁的集合就是網(wǎng)站。

Web容器

Web 容器,也叫Web 服務(wù)器,主要提供Web 服務(wù),也就是常說的HTTP 服務(wù)。
常見的Web 容器有:Apache/IIS/Nginx 等。

Apache天生就支持PHP,IIS天生就支持.net ? .asp

靜態(tài)頁面

靜態(tài)頁面,都是些.html 文件,是純文本文件。這些文件中包含html 代碼。
HTML(HyperText Markup Language,超文本標(biāo)記語言),在瀏覽器中解釋運(yùn)行。

中間件服務(wù)器

以上這種,只能單向給用戶展示信息。隨著Web 的發(fā)展,信息要雙向流動(dòng),產(chǎn)生了交互的需求,也就是動(dòng)態(tài)網(wǎng)頁的概念;所謂動(dòng)態(tài)就是利用flash、php、asp、Java 等技術(shù)在網(wǎng)頁中嵌入一些可以運(yùn)行的腳本,用戶瀏覽器在解釋頁面時(shí),遇到腳本就啟動(dòng)運(yùn)行它。

腳本的使用讓W(xué)eb 服務(wù)模式有了雙向交流的能力,Web服務(wù)器模式也可以像傳統(tǒng)的軟件一樣進(jìn)行各種事務(wù)的處理,如編輯文件、利息計(jì)算、提交表單等,Web 架構(gòu)的適用面大大擴(kuò)展

這些腳本可以嵌入到頁面中,如JS等。也可以以文件的形式單獨(dú)存放在Web 服務(wù)器的目錄里,如.asp、.php、jsp 文件等。這樣功能性的腳本越來越多,形成常用的工具包,單獨(dú)管理,Web 業(yè)務(wù)開發(fā)時(shí),直接使用就可以了,這就是中間件服務(wù)器,它實(shí)際上時(shí)Web 服務(wù)器處理能力的擴(kuò)展。

數(shù)據(jù)庫(kù)的出現(xiàn)

靜態(tài)網(wǎng)頁與腳本都是事先設(shè)計(jì)好的,一般不經(jīng)常改動(dòng),但網(wǎng)站上的很多內(nèi)容需要經(jīng)常更新,將這些變動(dòng)的數(shù)據(jù)放在靜態(tài)網(wǎng)頁的程序中顯然不合適,傳統(tǒng)的辦法是數(shù)據(jù)與程序分離,采用的專業(yè)的數(shù)據(jù)庫(kù)。

Web 開發(fā)者在Web 服務(wù)器后邊增加了一個(gè)數(shù)據(jù)庫(kù)服務(wù)器,這些經(jīng)常變動(dòng)的數(shù)據(jù)被存進(jìn)數(shù)據(jù)庫(kù),可以隨時(shí)更新。當(dāng)用戶請(qǐng)求頁面時(shí),腳本根據(jù)用戶請(qǐng)求的頁面,涉及到動(dòng)態(tài)數(shù)據(jù)的地方,利用SQL數(shù)據(jù)庫(kù)語言,從數(shù)據(jù)中讀取最新的數(shù)據(jù),生產(chǎn)“完整”頁面,最后送給用戶

建立一個(gè)網(wǎng)站

源碼鏈接:https://pan.baidu.com/s/1lsn9gfOQ1TbNwIiIn-9MJw
提取碼:cy39

將源碼中的cms文件復(fù)制到phpstudy網(wǎng)站根目錄

cms文件夾中的install.sql(數(shù)據(jù)庫(kù)文件)
在include文件下有一個(gè)database.inc.php(數(shù)據(jù)庫(kù)配置文件)右鍵打開

新建一個(gè)cms數(shù)據(jù)庫(kù)(phpmyadmin)

導(dǎo)入,找到install.sql(先選中數(shù)據(jù)庫(kù)再去導(dǎo)入)

然后再刷新一下頁面

?

HTTP 協(xié)議概述

HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議,是傳遞消息的規(guī)范和要求。

  • 概述

@

1990 年提出的,當(dāng)前版本1.1。

@

HTTP 是用來將html 文檔從Web服務(wù)器傳輸?shù)絎eb瀏覽器。

@

是一個(gè)請(qǐng)求和響應(yīng)的協(xié)議。客戶端發(fā)出請(qǐng)求,服務(wù)器端對(duì)請(qǐng)求給出回應(yīng)。

@

HTTP 使用可靠的TCP 連接,默認(rèn)端口80

  • 特點(diǎn)

@

支持瀏覽器/服務(wù)器模式

@

簡(jiǎn)單快速:瀏覽器向服務(wù)器提出請(qǐng)求時(shí),只需要傳送請(qǐng)求方法和請(qǐng)求路徑

@

靈活:HTTP 運(yùn)行傳輸任意類型的數(shù)據(jù)對(duì)象(包括html,jpg,mp3)

.html

?

純文本

.jpg

?

圖片

.mp3

?

音頻

@

HTTP 協(xié)議是無狀態(tài)的協(xié)議

?

  • URL

統(tǒng)一資源定位符(網(wǎng)址),用來告訴Web 容器,瀏覽器所請(qǐng)求的資源(文件)的路徑。例如:http://localhost/test/requests.php?id=32

上面那個(gè)url為什么沒有用戶名和密碼?
省略了。因?yàn)橐粋€(gè)web服務(wù)發(fā)布到互聯(lián)網(wǎng)上就是想讓他匿名訪問

證明用戶名和密碼的存在:ftp://1901:123.com@10.0.105.223

URL格式:

Schema://login:password@adress:port/path/to/resource/?query_string#fragment

schema://????????????? 是協(xié)議的名稱
login:password??? 用戶名和密碼
@adress ? ? ? ? ? ??? 地址(包括ip地址或者域名)
port??????????????????????? 默認(rèn)80,其他要加上
/path/to/resource/? 資源的路徑
?query_string ? ? ? ? 查詢字符串
fragment???????????????? 錨點(diǎn)(實(shí)現(xiàn)頁面定位)

Port

?

80

Login

?

用戶名

Password

?

密碼???

Fragment

?

錨點(diǎn)

@

URL編碼

URL 只允許出現(xiàn)的字符是有限制的,URL 中path 開始允許直接出現(xiàn)[A-Z][a-z][0-9] 、半角減號(hào)(-)、下劃線句點(diǎn)(。)、波浪號(hào)(~)。其他字符均會(huì)被百分號(hào)編碼(包括空格)

如下:

#

?

%23

[?? ]空格

?

%20

url編碼原理:%+ASCII碼十六進(jìn)制形式

url編碼的時(shí)候不要用中文

在進(jìn)行編程的時(shí)候,會(huì)用[+]加號(hào)代替空格。

@

報(bào)文分析工具

1、F12

2、wireshark

3、fiddler

4、Burp suite

HTTP 報(bào)文分析

Web 應(yīng)用的所有通信的消息都要遵守HTTP 協(xié)議的規(guī)范和要求。

  • HTTP 工作模式

  • REQUEST

    • 請(qǐng)求報(bào)文,如下

GET /php/test/get.php HTTP/1.1
Host: 192.168.1.136
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.1.136/php/test/
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

安利一幾款代理工具:


Proxy Switcher and Manager

direct直連(就是不使用任何代理)

HTTP 請(qǐng)求由請(qǐng)求行、請(qǐng)求頭、請(qǐng)求正文三部分組成

1、請(qǐng)求行:方法,資源路徑,協(xié)議/版本

方法:GET

資源路徑:/php/test/get.php

協(xié)議/版本:HTTP/1.1

2、請(qǐng)求頭

從請(qǐng)求報(bào)文第二行開始到第一個(gè)空行為止的內(nèi)容。其中包含很多字段

請(qǐng)求頭和請(qǐng)求正文有一個(gè)空格,請(qǐng)求行和請(qǐng)求頭之間沒有空格

3、請(qǐng)求正文

以上方法(GET方式)沒有請(qǐng)求正文,后面會(huì)看到(POST有請(qǐng)求正文)

?

請(qǐng)求方法:(請(qǐng)求行有哪些字段)

GET

最常用的方法,通常用戶請(qǐng)求服務(wù)器發(fā)送的某個(gè)資源。

POST

可以向服務(wù)器提交參數(shù)以及表單,包括文件流等

HEAD

與GET 方法類似,但在服務(wù)器響應(yīng)中只返回首部

PUT(危險(xiǎn))

與GET 從服務(wù)器讀取文檔相反,PUT 方法會(huì)向服務(wù)器寫入文檔

TRACE

回顯瀏覽器的請(qǐng)求

OPTIONS

請(qǐng)求Web 服務(wù)器告知其支持的各種功能

DELETE

請(qǐng)求服務(wù)器刪除請(qǐng)求URL所指定的資源(可以刪除任意文件)

如果我們服務(wù)器開啟了PUT、TRACE、DELETE任意一個(gè)方法,我們就認(rèn)為服務(wù)器很危險(xiǎn)!

  • 實(shí)驗(yàn)

使用telnet 模擬瀏覽器發(fā)送HTTP 請(qǐng)求

http協(xié)議特點(diǎn)是簡(jiǎn)單快速,我們?cè)谡?qǐng)求資源的時(shí)候只需要發(fā)送請(qǐng)求資源和路徑
可以構(gòu)造一個(gè)http請(qǐng)求報(bào)文:

在win7中開啟telnet訪問:控制面板---程序---打開或關(guān)閉windows功能---勾選telnet客戶端---確定

利用telnet發(fā)送get請(qǐng)求:

telnet? 172.16.132.161 80
------------------
GET /php/test/get.php HTTP/1.1(請(qǐng)求方法+資源路徑+協(xié)議版本)
HOST:172.16.132.161
-----------------

回車后一片空白(敲ctrl+]打開回顯)
再按回車進(jìn)入空白界面,把上面報(bào)文粘貼

再回車一下,就可以看到服務(wù)器的響應(yīng)


Telnet www.baidu.com 80

----------------

GET / HTTP/1.1
Host: www.baidu.com

-----------

回車,看到html(用cmd)

在虛擬機(jī)里面新建一個(gè)baidu.html文件,把上面代碼粘貼進(jìn)去,訪問

這樣就可以通過telnet去模擬瀏覽器發(fā)送http請(qǐng)求

利用OPTIONS 方法測(cè)試Web 服務(wù)器允許的HTTP請(qǐng)求

---------------

OPTIONS / HTTP/1.1

Host: 192.168.1.136

-------

利用telnet 傳送GET 參數(shù)

-------------

??? GET /php/test/get.php?name=AJEST&pwd=123456 HTTP/1.1

??? Host: 192.168.1.136

-------------

利用telnet 模擬POST,請(qǐng)求傳遞參數(shù)

---------------

POST /php/test/post.php?http://192.168.1.136/php/test/post.php HTTP/1.1
Host: 192.168.1.136
Content-Type: application/x-www-form-urlencoded
Content-Length: 19

name=GGG&pwd=123456

-------------


想用一種簡(jiǎn)單的方法用post方式提交數(shù)據(jù):(否則還要寫一個(gè)表單)
工具:hackbar


請(qǐng)求頭有哪些字段:

Host

主要用與指定被請(qǐng)求資源的Internet 主機(jī)和端口號(hào)

User-Agent

瀏覽器指紋

Referer

包含一個(gè)URL,代表當(dāng)前的URL的上一個(gè)URL(就是我們這么這個(gè)請(qǐng)求是從哪一個(gè)頁面跳轉(zhuǎn)過來的)

Cookie

記錄請(qǐng)求者的身份認(rèn)證信息

Accept-Charset

用戶指定客戶端接受的字符集

Content-Type

用于向接收方知識(shí)實(shí)體的介質(zhì)類型(就是數(shù)據(jù)類型)

Content-Length

用于指明實(shí)體正文的長(zhǎng)度,以字節(jié)的方式存儲(chǔ)的十進(jìn)制數(shù)字來表示

Last-Modified

用于指示資源的最后修改時(shí)間和日期

?

?

?

RESPONSE

  • 響應(yīng)報(bào)文如下:

---------------------------------------------------------------------------------

HTTP/1.1 200 OK
Date: Sat, 25 Apr 2020 09:50:59 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Content-Length: 13
Connection: close
Content-Type: text/html

array(0) {

}

------------------------------------------------------------------------------

響應(yīng)報(bào)文由狀態(tài)行(響應(yīng)行)、響應(yīng)報(bào)頭、響應(yīng)正文三部分組成。

1、狀態(tài)行:協(xié)議/版本,狀態(tài)代碼,描述短語

協(xié)議/版本:HTTP/1.1
狀態(tài)代碼:200
描述短語:OK

2、響應(yīng)報(bào)頭

第二行開始到第一個(gè)空行為止的所有內(nèi)容,其中包含了關(guān)于HTTP響應(yīng)的重要字段。

3、響應(yīng)正文

服務(wù)器返回資源的內(nèi)容,即瀏覽器接收到的HTML 代碼。
?

狀態(tài)碼

100~199

信息性狀態(tài)碼(少見)

200~299

成功狀態(tài)碼(最常見,2開頭就是請(qǐng)求成功)

300~399

重定向狀態(tài)碼

400~499

客戶端錯(cuò)誤狀態(tài)碼

500~599

服務(wù)器錯(cuò)誤狀態(tài)碼

寫一個(gè)重定向代碼:

location.php: <?php header("Location:./get.php"); ?>//我沒在訪問location.php的瞬間會(huì)直接到get.php頁面

主要字段

Server

服務(wù)器指紋

Set-Cookie

向?yàn)g覽器端設(shè)置Cookie

Last-Modified

服務(wù)器通過這個(gè)頭信息告訴瀏覽器,資源的最后修改時(shí)間

Content-Length

請(qǐng)求正文長(zhǎng)度

Location

重定向目標(biāo)頁面

Refresh

服務(wù)器通過Refresh頭告訴瀏覽器定時(shí)刷新瀏覽器

同源策略的條件

  • URL 的主機(jī)(FQDN:Fully Qualified Domain Name 全程域名)一致
  • Schema 一致
  • 端口號(hào)一致

同源策略的保護(hù)對(duì)象不僅僅時(shí)iframe 內(nèi)文檔。比如實(shí)現(xiàn)Ajax 時(shí)所使用的XMLHttpRequest 對(duì)象能夠訪問的 URL也受到了同源策略的限制。

sop叫同源策略

同源策略的探究

  • 準(zhǔn)備兩個(gè)頁面

  • -------index.html

    ??? <html>

    ??? <head>

    ??? <title> 跨 frame 的讀取實(shí)驗(yàn) </title>

    ??? <meta charset="utf-8">

    ??? </head>

    ??? <body>

    ??? <iframe name="iframe1" width="300" height="80"

    ??? src="http://192.168.3.10/sop/iframe.html"

    ??? >

    ??? </iframe>

    ??? <input type="button" οnclick="go()" value=" 密碼: ">

    ??? <script>

    ??? function go(){

    ??? try {

    ??? var x = iframe1.document.form1.passwd.value;

    ??? document.getElementById('out').innerHTML = x;

    ??? } catch (e){

    ??? alert(e.message);

    ??? }

    ??? }

    ??? </script>

    ??? <span id="out"></span>

    ??? </body>

    ??? </html>

    --------

    --------iframe.html

    ??? <html>

    ??? <head>

    ??? <meta charset="utf-8">

    ??? </head>

    ??? <body>

    ??? <form name="form1"> iframe 的內(nèi)層

    ??? 密碼 <input type="text" name="passwd" value="password1">

    ??? </form>

    ??? </body>

    ??? </html>

    --------

    這里我們使用我們服務(wù)器的瀏覽器測(cè)試這個(gè)實(shí)驗(yàn)(因?yàn)槲覀円褂貌煌膬蓚€(gè)URL來訪問我們的網(wǎng)頁)

    我們用指定的IP訪問,可以正常讀取

當(dāng)時(shí)當(dāng)我們使用我們本機(jī)的回環(huán)地址去訪問時(shí),打開頁面,無法讀取(這就是由同源策略限制,無法訪問內(nèi)層iframe)

?

總結(jié)

以上是生活随笔為你收集整理的【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。