軟件測試 | 使用以URL方式編碼的數(shù)據(jù)
問題
URL編碼的數(shù)據(jù)使用%字符和十六進(jìn)制數(shù)字來傳送URL中不允許直接使用的字符。空格、尖括號(<和>)和斜線(斜線分隔符號/)是幾個(gè)常見的例子。如果你在Web應(yīng)用中看到URL編碼的數(shù)據(jù)(或許是在參、輸入或某些原源代碼中),而且需要理解或處理它,那么必須對它進(jìn)行解碼或編碼。
解決方案
最簡單的方法是使用OWASP的CAL9000。它是一些列HTML網(wǎng)頁,使用JavaScript來執(zhí)行基本計(jì)算。它提供了一種交互的方式來復(fù)制或粘貼數(shù)據(jù),以及任何地進(jìn)行編碼或解碼。
編碼
在“Plain Text”框中輸入解碼后的數(shù)據(jù),然后單擊“Select Encoding Type”下方左側(cè)的“Url(%XX)”按鈕。

解碼
在“Encoded Text”框中輸入編碼數(shù)據(jù),然后單擊“Select Decoding Type”下方左側(cè)的“Url(%XX)”選項(xiàng)。
討論
對于任何查看過HTML 源代碼或從網(wǎng)頁瀏覽器發(fā)送到Web服務(wù)器的任何后臺數(shù)據(jù)的人來說,URL編碼的數(shù)據(jù)都是不陌生的。RFC1738(ftp://ftp.isi.edu/in-notes/rfc11738.txt)定義了URL編碼,但它不要求明確的ASCII字符的編碼。注意,盡管并非必須,但對這些字符進(jìn)行不必要的編碼并沒用錯(cuò)。圖4-3中的編碼數(shù)據(jù)顯示了一個(gè)這樣的例子。實(shí)際上,冗余編碼是攻擊者用來掩飾其惡意輸入的一種方式。不成熟的黑名單會(huì)檢查<script>,甚至是%3script%3e,但可能不會(huì)檢查%3c%73%63%72%69%70%74%3e,盡管它們實(shí)質(zhì)上全部都是一樣的。

CAL9000的一大優(yōu)勢在于,它實(shí)際上并不是軟件。它是一組內(nèi)嵌有JavaScript的網(wǎng)頁。即使你的IT策略超級嚴(yán)格,你根本無法在自己的工作站上安裝任何東西,你仍然可以使用瀏覽器從本地硬盤中打開這些網(wǎng)頁,而它們就能夠供你使用。你可以簡單地將它們裝載到USB驅(qū)動(dòng)器中,并直接從該驅(qū)動(dòng)器中加載它們,這樣你根本不需要安裝任何東西。