您好,登錄后才能下訂單哦!
本篇內容主要講解“Web安全的URL結構是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Web安全的URL結構是什么”吧!
在介紹百分號編碼前,還要了解URL需要對哪些字符進行編碼。
RFC3986文檔規定,URL中只允許包含英文字母(a~z、A~Z)、數字(0~9)、“-”“_”“.”“~” 4個特殊字符以及所有保留字符。
所謂的保留字符就是劃分URL的,分隔不同組件的字符。
百分號編碼的編碼方式非常簡單,使用百分號(%)加上兩個字符(0123456789ABCDEF),表示為一個字節的十六進制的形式。URL編碼默認使用的字符集是ASCII碼。例如,井號(#)對應的十六進制是0x23,所以它的URL編碼就為%23。對于非ASCII字符,需要使用ASCII字符集的超集進行編碼得到相應的字節,然后對每個字節執行百分號編碼。
在傳輸前,瀏覽器會對 URL 進行編碼。接收 URL 的服務器主要負責對接收到的 URL進行解析。URL的使用過程當中,由于互聯網上的每個網頁大多會引用與它同服務器甚至是同級目錄下的文件,就會使用到相對URL的概念。在介紹URL編碼時,展示的是絕對URL,這就相當于電腦中的相對路徑與絕對路徑的區別。所以在解析的時候,服務器需要區分相對URL與絕對URL。
按照規范里的說法,要區分兩者非常簡單。如果 URL 字符串不是一個有效的協議名,后面跟的不是冒號(:)或雙斜杠(//),那么它就是一個需要被引用的相對 URL。其實在實際應用中,對于相對 URL 的解析是有規范的,因為不同瀏覽器的具體實現千差萬別,有效協議名稱的字符集也各有不同,還有各種替代雙斜杠(//)分隔符的方法,因此,接下來會對相對URL的解析進行一個歸類。
(1)有協議名稱,但沒有授權信息(http:abc.txt)。這是一個比較有名的漏洞,它的產生是由RFC3986規范疏忽所致。在規范中將這些地址描述為無效的絕對地址,但在提供的解析算法中又將這種地址的解析搞錯了。所以這種形式的URL,在執行過程中會被理解為相對地址來進行處理。例如,在某些情況下,http:abc.txt會被理解為相對地址,而https:example.com會被解釋為絕對地址。
(2)沒有協議名,但有授權信息(//example.com)。這種寫法在規范中給出了較為完整的處理。面對這種URL,瀏覽器會自動補全該URL。
(3)沒有協議名,沒有授權信息,但有路徑(../robots.txt)。這是一種比較常見的用法,協議和授權信息都從引用URL里復制過來,然后將這個相對地址進行補全。
(4)沒有協議名,沒有授權信息,沒有路徑,但有查詢的字符串(?username=abc)。在這種情況下,協議、授權信息、路徑全都會原封不動地從原引用 URL 復制過來。查詢字符串和字段ID則來自于相對URL。
(5)只有片段 ID(#bunnies)。這種方式也是如此,其他部分全部原封不動地從原引用URL復制,只替換字段ID的部分。
到此,相信大家對“Web安全的URL結構是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。