主頁 >  其他 > 前端面試:Http協議與瀏覽器

前端面試:Http協議與瀏覽器

2021-01-16 07:16:36 其他

Http與Https的區別

Http是明文傳輸的,Https協議是在Http協議上添加了SSL的加密協議,可以進行加密傳輸和身份驗證,

其實就是說Http對網路傳輸完全是裸奔狀態,也就沒辦法防范中間人攻擊,因為根本沒有加解密措施,不過Https相比Http也只是添加了SSL加密層,所以它仍然是一種特殊的Http,仍然是無狀態的,

Https的鏈接建立程序

  1. 根據訪問的URL,Web服務器會判斷你是否需要建立Https加密鏈接
  2. Web服務器接受到請求之后會將網站的證書,公鑰一起傳輸給請求者
  3. 請求者與Web服務器溝通協商加密等級,也就是安全等級
  4. 根據協商后的加密等級,請求者使用之前Web服務器傳遞來的網站公鑰加密私鑰,然后傳遞給Web服務器
  5. Web服務器利用自己的私鑰解密傳輸來的資訊
  6. 建立通訊

TCP鏈接的建立程序

常見的Http狀態碼[1]

一些常見的狀態碼為:

200 - 服務器成功回傳網頁
404 - 請求的網頁不存在
503 - 服務不可用
詳細分解:

1xx(臨時回應)

表示臨時回應并需要請求者繼續執行操作的狀態代碼,

代碼 說明
100 (繼續) 請求者應當繼續提出請求,服務器回傳此代碼表示已收到請求的第一部分,正在等待其余部分,
101 (切換協議) 請求者已要求服務器切換協議,服務器已確認并準備切換,

2xx (成功)

表示成功處理了請求的狀態代碼,

代碼 說明
200 (成功) 服務器已成功處理了請求,通常,這表示服務器提供了請求的網頁,
201 (已創建) 請求成功并且服務器創建了新的資源,
202 (已接受) 服務器已接受請求,但尚未處理,
203 (非授權資訊) 服務器已成功處理了請求,但回傳的資訊可能來自另一來源,
204 (無內容) 服務器成功處理了請求,但沒有回傳任何內容,
205 (重置內容) 服務器成功處理了請求,但沒有回傳任何內容,
206 (部分內容) 服務器成功處理了部分 GET 請求,

3xx (重定向)

表示要完成請求,需要進一步操作, 通常,這些狀態代碼用來重定向,

代碼 說明
300 (多種選擇) 針對請求,服務器可執行多種操作,服務器可根據請求者 (user agent) 選擇一項操作,或提供操作串列供請求者選擇,
301 (永久移動) 請求的網頁已永久移動到新位置,服務器回傳此回應(對 GET 或 HEAD 請求的回應)時,會自動將請求者轉到新位置,
302 (臨時移動) 服務器目前從不同位置的網頁回應請求,但請求者應繼續使用原有位置來進行以后的請求,
303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索回應時,服務器回傳此代碼,
304 (未修改) 自從上次請求后,請求的網頁未修改過,服務器回傳此回應時,不會回傳網頁內容,
305 (使用代理) 請求者只能使用代理訪問請求的網頁,如果服務器回傳此回應,還表示請求者應使用代理,
307 (臨時重定向) 服務器目前從不同位置的網頁回應請求,但請求者應繼續使用原有位置來進行以后的請求,

4xx(請求錯誤)

這些狀態代碼表示請求可能出錯,妨礙了服務器的處理,

代碼 說明
400 (錯誤請求) 服務器不理解請求的語法,
401 (未授權) 請求要求身份驗證, 對于需要登錄的網頁,服務器可能回傳此回應,
403 (禁止) 服務器拒絕請求,
404 (未找到) 服務器找不到請求的網頁,
405 (方法禁用) 禁用請求中指定的方法,
406 (不接受) 無法使用請求的內容特性回應請求的網頁,
407 (需要代理授權) 此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理,
408 (請求超時) 服務器等候請求時發生超時,
409 (沖突) 服務器在完成請求時發生沖突,服務器必須在回應中包含有關沖突的資訊,
410 (已洗掉) 如果請求的資源已永久洗掉,服務器就會回傳此回應,
411 (需要有效長度) 服務器不接受不含有效內容長度標頭欄位的請求,
412 (未滿足前提條件) 服務器未滿足請求者在請求中設定的其中一個前提條件,
413 (請求物體過大) 服務器無法處理請求,因為請求物體過大,超出服務器的處理能力,
414 (請求的 URI 過長) 請求的 URI(通常為網址)過長,服務器無法處理,
415 (不支持的媒體型別) 請求的格式不受請求頁面的支持,
416 (請求范圍不符合要求) 如果頁面無法提供請求的范圍,則服務器會回傳此狀態代碼,
417 (未滿足期望值) 服務器未滿足”期望”請求標頭欄位的要求,

5xx(服務器錯誤)

這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤, 這些錯誤可能是服務器本身的錯誤,而不是請求出錯,

代碼 說明
500 (服務器內部錯誤) 服務器遇到錯誤,無法完成請求,
501 (尚未實施) 服務器不具備完成請求的功能,例如,服務器無法識別請求方法時可能會回傳此代碼,
502 (錯誤網關) 服務器作為網關或代理,從上游服務器收到無效回應,
503 (服務不可用) 服務器目前無法使用(由于超載或停機維護),通常,這只是暫時狀態,
504 (網關超時) 服務器作為網關或代理,但是沒有及時從上游服務器收到請求,
505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本,

HttpWatch狀態碼Result is

200 - 服務器成功回傳網頁,客戶端請求已成功,
302 - 物件臨時移動,服務器目前從不同位置的網頁回應請求,但請求者應繼續使用原有位置來進行以后的請求,
304 - 屬于重定向,自上次請求后,請求的網頁未修改過,服務器回傳此回應時,不會回傳網頁內容,
401 - 未授權,請求要求身份驗證, 對于需要登錄的網頁,服務器可能回傳此回應,
404 - 未找到,服務器找不到請求的網頁,
2xx - 成功,表示服務器成功地接受了客戶端請求,
3xx - 重定向,表示要完成請求,需要進一步操作,客戶端瀏覽器必須采取更多操作來實作請求,例如,瀏覽器可能不得不請求服務器上的不同的頁面,或通過代理服務器重復該請求,
4xx - 請求錯誤,這些狀態代碼表示請求可能出錯,妨礙了服務器的處理,
5xx - 服務器錯誤,表示服務器在嘗試處理請求時發生內部錯誤, 這些錯誤可能是服務器本身的錯誤,而不是請求出錯,

Cookie、SessionStorage、LocalStorage[2]

共同點:都是保存在瀏覽器端,并且是同源的

cookie資料始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞,而sessionStorage和localStorage不會自動把資料發給服務器,僅在本地保存,cookie資料還有路徑(path)的概念,可以限制cookie只屬于某個路徑下,存盤的大小很小只有4K左右,Cookie的有效期由預先指定的過期時間決定, (key:可以在瀏覽器和服務器端來回傳遞,存盤容量小,只有大約4K左右)

在同源請求中始終存在,且存盤量較小,僅在客戶端本地保存

sessionStorage

僅在當前瀏覽器視窗關閉前有效,自然也就不可能持久保持,localStorage:始終有效,視窗或瀏覽器關閉也一直保存,因此用作持久資料;cookie只在設定的cookie過期時間之前一直有效,即使視窗或瀏覽器關閉,(key:本身就是一個會話程序,關閉瀏覽器后消失,session為一個會話,當頁面不同即使是同一頁面打開兩次,也被視為同一次回話)

同一個會話指的是當前瀏覽器頁面

localStorage

localStorage 在所有同源視窗中都是共享的,且LocalStorage是永久保存的,除非手動清除資料;cookie也是在所有同源視窗中都是共享的,(key:同源視窗都會共享,并且不會失效,不管視窗或者瀏覽器關閉與否都會始終生效)

補充說明一下cookie的作用:

保存用戶登錄狀態,例如將用戶id存盤于一個cookie內,這樣當用戶下次訪問該頁面時就不需要重新登錄了,現在很多論壇和社區都提供這樣的功能, cookie還可以設定過期時間,當超過時間期限后,cookie就會自動消失,因此,系統往往可以提示用戶保持登錄狀態的時間:常見選項有一個月、三個 月、一年等,

Cookie與Session的聯系

Cookie是存在瀏覽器本地的,由于Http協議是無狀態的,所以Cookie的主要作用之一就是存盤SessionID,而Session是Web服務器用來保存與某一指定客戶端的會話資訊,使用SessionID來進行標識,

CSRF與XSS攻擊

CSRF[3]

跨站請求偽造 Cross-site request forgery,可以理解為攻擊者盜用了用戶的身份,以用戶的名義發送了惡意請求,比如用戶登錄了一個網站后,立刻在另一個tab頁面訪問攻擊者用來制造攻擊的網站,這個網站要求訪問剛剛登錄的網站,并發送了一個惡意請求,這時候CSRF就產生了,比如這個制造攻擊的網站使用一張圖片,但是這種圖片的鏈接卻是可以修改資料庫的,這時候攻擊者就可以以用戶的名義操作這個資料庫,防御方式的話:使用驗證碼,檢查https頭部的refer,使用token

一個簡單的例子

假如一家銀行用以運行轉賬操作的URL地址如下: https://bank.example.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

那么,一個惡意攻擊者可以在另一個網站上放置如下代碼: <img src="https://bank.example.com/withdraw?account=Alice&amount=1000&for=Badman" />

如果有賬戶名為Alice的用戶訪問了惡意站點,而她之前剛訪問過銀行不久,登錄資訊尚未過期,那么她就會損失1000資金,

這種惡意的網址可以有很多種形式,藏身于網頁中的許多地方,此外,攻擊者也不需要控制放置惡意網址的網站,例如他可以將這種地址藏在論壇,博客等任何用戶生成內容的網站中,這意味著如果服務端沒有合適的防御措施的話,用戶即使訪問熟悉的可信網站也有受攻擊的危險

透過例子能夠看出,攻擊者并不能通過CSRF攻擊來直接獲取用戶的賬戶控制權,也不能直接竊取用戶的任何資訊,他們能做到的,是欺騙用戶的瀏覽器,讓其以用戶的名義運行操作

XSS[4]

跨站腳本攻擊,是說攻擊者通過注入惡意的腳本,在用戶瀏覽網頁的時候進行攻擊,比如獲取cookie,或者其他用戶身份資訊,可以分為存盤型和反射型,存盤型是攻擊者輸入一些資料并且存盤到了資料庫中,其他瀏覽者看到的時候進行攻擊,反射型的話不存盤在資料庫中,往往表現為將攻擊代碼放在url地址的請求引數中,防御的話為cookie設定httpOnly屬性,對用戶的輸入進行檢查,進行特殊字符過濾.

當網景(Netscape)最初推出JavaScript語言時,他們也察覺到準許網頁服務器發送可執行的代碼給一個瀏覽器的安全風險(即使僅是在一個瀏覽器的沙盒里),它所造成的一個關鍵的問題在于用戶同時開啟多個瀏覽器視窗時,在某些例子里,網頁里的片斷代碼被允許從另一個網頁或物件取出資料,而因為惡意的網站可以用這個方法來嘗試竊取機密資訊,所以在某些情形,這應是完全被禁止的,為了解決這個問題,瀏覽器采用了同源決策——僅允許來自相同域名系統和使用相同協議的物件與網頁之間的任何互動,這樣一來,惡意的網站便無法借由JavaScript在另一個瀏覽器竊取機密資料,此后,為了保護用戶免受惡意的危害,其他的瀏覽器與服務端指令語言采用了類似的訪問控制決策,

XSS漏洞可以追溯到1990年代,大量的網站曾遭受XSS漏洞攻擊或被發現此類漏洞,如Twitter[1],Facebook[2],MySpace,Orkut ,新浪微博和百度貼吧 ,研究表明,最近幾年XSS已經超過緩沖區溢位成為最流行的攻擊方式,有68%的網站可能遭受此類攻擊,根據開放網頁應用安全計劃(Open Web Application Security Project)公布的2010年統計資料,在Web安全威脅前10位中,XSS排名第2,僅次于代碼注入(Injection),


  1. 轉載自博客園 https://www.cnblogs.com/feng9exe/p/8036657.html ??

  2. 牛客網前端面試筆記 https://www.nowcoder.com/tutorial/96/4700c6f1f3334c9191a38406002efa65 ??

  3. https://zh.wikipedia.org/wiki/跨站請求偽造 ??

  4. https://zh.wikipedia.org/wiki/跨網站指令碼 ??

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249370.html

標籤:其他

上一篇:程式人生:產品上線前出現大BUG是怎樣的心情?

下一篇:精選2021年BATJ最新Java面試題:spring框架+Redis+多執行緒+mysql等

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more