日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

目錄

Web 工作機(jī)制

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

Web容器

靜態(tài)頁(yè)面

中間件服務(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è)頁(yè)面


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

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

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

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

Web 工作機(jī)制

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

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

Web容器

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

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

靜態(tài)頁(yè)面

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

中間件服務(wù)器

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

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

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

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

靜態(tài)網(wǎng)頁(yè)與腳本都是事先設(shè)計(jì)好的,一般不經(jīng)常改動(dòng),但網(wǎng)站上的很多內(nèi)容需要經(jīng)常更新,將這些變動(dòng)的數(shù)據(jù)放在靜態(tài)網(wǎng)頁(yè)的程序中顯然不合適,傳統(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)求頁(yè)面時(shí),腳本根據(jù)用戶請(qǐng)求的頁(yè)面,涉及到動(dòng)態(tài)數(shù)據(jù)的地方,利用SQL數(shù)據(jù)庫(kù)語(yǔ)言,從數(shù)據(jù)中讀取最新的數(shù)據(jù),生產(chǎn)“完整”頁(yè)面,最后送給用戶

建立一個(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)入)

然后再刷新一下頁(yè)面

?

HTTP 協(xié)議概述

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

  • 概述

@

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

@

HTTP 是用來(lái)將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é)議是無(wú)狀態(tài)的協(xié)議

?

  • URL

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

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

證明用戶名和密碼的存在: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)頁(yè)面定位)

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)求頭之間沒(méi)有空格

3、請(qǐng)求正文

以上方法(GET方式)沒(méi)有請(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訪問(wèn):控制面板---程序---打開或關(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)去,訪問(wèn)

這樣就可以通過(guò)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è)頁(yè)面跳轉(zhuǎn)過(guò)來(lái)的)

Cookie

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

Accept-Charset

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

Content-Type

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

Content-Length

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

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)代碼,描述短語(yǔ)

協(xié)議/版本:HTTP/1.1
狀態(tài)代碼:200
描述短語(yǔ):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"); ?>//我沒(méi)在訪問(wèn)location.php的瞬間會(huì)直接到get.php頁(yè)面

主要字段

Server

服務(wù)器指紋

Set-Cookie

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

Last-Modified

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

Content-Length

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

Location

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

Refresh

服務(wù)器通過(guò)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ì)象能夠訪問(wèn)的 URL也受到了同源策略的限制。

sop叫同源策略

同源策略的探究

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

  • -------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來(lái)訪問(wèn)我們的網(wǎng)頁(yè))

    我們用指定的IP訪問(wèn),可以正常讀取

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

?

總結(jié)

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

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