簡述 HTTP/1 到 HTTP/3 的差異

HTTP 的演化史:

HTTP/1 -> HTTP/1.1 -> HTTP/2 -> HTTP/3


HTTP/1 v.s. HTTP/1.1


HTTP/1 在每一次的請求都必須重新建立 TCP 連線,既費時且耗頻寬,HTTP/1.1 則默認使用 Keep-alive 持久連線,可重複使用同一個 TCP 連線發送 HTTP 請求

HTTP/1 主要使用標頭中的 If-Modified-Since、Expires 來做為緩存的判斷標準,HTTP/1.1 則引入更多緩存控制機制,例如:Etag、If-Unmodified-Since、If-Match、If-None-Match,透過這些可以更優化緩存的實現

HTTP/1 客戶端發送一個請求給伺服器端,需等待伺服器回應後,才可發送第二筆請求,HTTP/1.1 新增 HTTP pipeline 機制,允許讓客戶端傳送多個 HTTP 請求,不用等待之前的請求回覆,如此能讓網頁載入速度變快,但伺服器端必須按照客戶端傳送的請求順序來回覆請求,要維持先進先出的規則,所以有可能發生隊頭阻塞(HOL blocking)的狀況,即因前一筆請求回應耗時,後面的請求都必須延遲回應,另外因為先進先出的規則嚴格難實作,許多瀏覽器都是預設關閉此功能的 (瀏覽器實踐上,為了維持一定的載入速度,會創建多個 TCP 連線來達到平行載入,瀏覽器通常會限制對一個域名同時只能有一定數量的 TCP 連線)

[閱讀全文]

網路安全筆記 (2) 用戶端的漏洞


Corss-Site scripting (XSS)


跨站腳本漏洞通常允許攻擊者偽裝成受害用戶,執行用戶能夠執行的行動並訪問用戶的任何數據

跨站腳本的工作原理是操控一個有漏洞的網站,使其向用戶返回惡意的 JS,當惡意代碼在受害者的瀏覽器中執行時,攻擊者可以操控破壞他與應用程序的互動

有三種 XSS 攻擊

  • Reflected XSS:惡意腳本來自當前的 HTTP 請求
  • Stored XSS:惡意腳本來自網站的資料庫
  • DOM-based XSS:漏洞存在於客戶端程式碼非服務器端程式碼
[閱讀全文]

網路安全筆記 (1) 服務器端的漏洞

最近發現不錯的網路安全學習資源:

https://portswigger.net/web-security/learning-path

在這個網站介紹許多網路安全漏洞以及預防方法

如果有登入帳號的話,還有各種 Lab 讓你體驗嘗試攻擊者是如何利用這些漏洞來進行網路攻擊

以下是我基於此網站的內容作的筆記整理


SQL Injection (SQL 注入)


SQL injection 發生在使用者能影響改動資料庫的 query 時

[閱讀全文]

一文搞懂 URI & URL 的差別


URI, URL 這兩個詞是我相當常使用到的詞彙,但具體這兩個差別在哪,我一直沒認真記住過,使用起來都把他們當作"網頁連結"來看,這次藉著筆記就來好好認真記住這兩個的差別!

URI (Uniform Resource Identifier),統一資源標識符

是用於標誌某一資源的字串,其實不一定限於網路上的資源

[閱讀全文]