1. 程式人生 > 其它 >macOS的高階音樂播放器Swinsian,具有廣泛的格式支援,資料夾監視,高階標籤編輯功能

macOS的高階音樂播放器Swinsian,具有廣泛的格式支援,資料夾監視,高階標籤編輯功能

介紹

url編碼是一種將普通文字編碼再編碼的方案。用於保證url資料安全傳輸。

url編碼可以針對所有字元進行編碼,與html實體編碼僅對部分字元可以編碼形成對比。

url編碼作用

http://www.cc.com/login?name=abc

1、敏感字元編碼

敏感字元,是指ascii編碼中可能對url結構進行影響的字元,比如#

如果想表示敏感字元作為普通文字字元,比如#作為請求引數的值,可以通過對敏感字元進行URL編碼,伺服器接收後將視其為普通文字字元而非url結構字元。

2、控制字元

無法直接輸入的字元,Ascii之內的控制字元,即0-31和127。

3、多位元組字元編碼

多位元組字元的某個位元組可能是單位元組的敏感字元或控制字元,伺服器可能將其誤解析,因此要求對所有多位元組進行URL編碼。

編碼方案

1、普通文字編碼方案

一般而言,是使用utf-8對普通文字編碼,這樣可以相容幾乎所有字元。

(至少測試過程中,最新版的Edge和firefox、chorm瀏覽器是如此)

2、編碼

先將字元用UTF-8編碼進行表示,URL編碼是對每個位元組前加%字元字首。

比如:

abc123      %61%62%63%31%32%33
宇宙        %E5%AE%87%E5%AE%99

url編碼使用

當地址欄直接輸入url,或者頁面內發起url請求,瀏覽器將對path和query部分能夠識別的屬於自動編碼範圍的字元進行自動URL編碼,再進行請求。

1、瀏覽器無法自動識別對是url結構的字元,還是普通文字,對於這一部分字元如果要作為普通文字字元,必須手動設定url編碼。

  • 比如路徑部分的/#?=&
  • 比如引數部分的&=#
  • Ascii之內的控制字元,即0-31和127

2、瀏覽器對ascii內完全不會引起安全問題的字元,不進行自動編碼,也不要求編碼。當然,手動編碼也是可以正常請求的。

  • Ascii之內的數字和字母,數字48-57,大寫字母65-90,小寫字母97-122不會進行編碼。

3、瀏覽器自動編碼的範圍包括:ascii之外的所有字元,ascii之內的部分字元

4、常見的幾種瀏覽器Edge、firefox、chorm對自動編碼前後的位址列顯示可能有所差異,但是請求中所進行的編碼沒有差異,自動編碼範圍相同。(IE對path和query編碼有所差別,但近乎淘汰,暫時不考慮討論)

url編碼與空格

url中不能直接包含空格,否則伺服器會報請求結構錯誤。

瀏覽器會將空格編碼成%20或者字元+

而真正的字元+如果想要表示,則需要使用url編碼%2b

url編碼與表單

當表單元素form的enctype為預設值,或者顯式設定為application/x-www-form-urlencoded時,請求頭部欄位為:

Content-Type: application/x-www-form-urlencoded

此時表單提交資料也會進行url編碼,伺服器接收後會根據該請求頭部欄位判斷進行url解碼。

url編碼與解碼工具

(1)http://www.jsons.cn/urlencode/

該網址是一個線上url編碼與解碼工具,其可以對幾乎所有文字字元進行URL編碼和解碼。

使用方便,但是不會對字母和數字等簡單ascii字元進行URL編碼。

(2)burp的Decoder模組選擇Encode或Decode方案為URL

可以對字母和數字等簡單ascii字元進行URL編碼,但是無法對多位元組進行URL編碼,編碼多位元組是錯誤的結果。同樣也無法針對多位元組字元的編碼結果進行解碼。

一般將這兩個工具結合使用。

url編碼與xss

將字元進行URL編碼,可以使得使用者無法直觀檢視url,但又不影響請求。