Security ❀ HTTP傳輸過程的編碼

HTTP傳輸過程的編碼

在HTML中,利用/ ? & 等符號實現針對特定字符的內容定義,如規定訪問路徑、參數名稱及間隔等,傳輸過程中的編碼是爲了解決直接出現該特殊字符而定義的;

(1)URL編碼
URL只允許包含大小寫英文字母、數字、四個特殊字符(- _ . 、)以及所有保留字符;
URL編碼主體採用的是ASCII編碼表,編碼方式是用%加上兩位字符代表一個字節,如果當前頁面使用UTF-8編碼,則會先將中文字符轉換成UTF-8編碼,然後在每一個字符的每一組編碼前添加%,這樣就完成了URL編碼;

(2)Base64編碼
Base64是網絡上常見的用於傳輸8bit字節代碼的編碼之一,其原理是將3個8bit字節轉化爲4個6bit的字節,因此Base64編碼的特點是編碼後的字節數是4的倍數,如果不足使用=進行填充;
Base64編碼非常好識別,它含有大小寫字母及+、-、=等符號;
Base64編碼可用於在HTTP環境下傳遞較長的標識信息,在HTTP Basic認證中依然利用Base64對用戶密碼編碼後進行傳輸,在早期的Web木馬中,也會利用Base64對木馬文件進行重複編碼達到源碼混淆的效果;

(3)HTML字符實體
HTML字符實體是用來表示HTML中危險字符的方案,也是解決跨站腳本攻擊(XSS)的有效手段;
以常見的跨站腳本代碼爲例:

<script>alert(/xss/)</script>

當這段代碼由客戶端提交到Web頁面後,由於語句中含有<script>標籤,會導致HTML頁面將其當做JavaScript代碼進行執行,因此在HTML內容中不能使用小於號和大於號,因此瀏覽器會認爲他們是標籤;
在日常應用中,如果需要正確地顯示危險字符,可以使用HTML字符實體進行實現,HTML字符實體的特點是以&開頭,並以分號結尾;
例如,<的編碼是&lt,在實上述語句中,當用戶提交的參數爲

&lt;script&gt;alert(/xss/)&lt;/script&gt; 

這樣就解決了危險字符的顯示問題;
編碼的初衷是解決不同類型組件傳遞信息的一致性;

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