第二步:鑒別特殊的字符
什么是特殊字符?HTML定義如下:特殊字符就是那些能夠影響頁面顯示效果的字符。依據(jù)上下文的不同,特殊字符也會有所不同。下面我們來分類看看:
● 在塊級別元素所包含的內(nèi)容中應(yīng)考慮的特殊字符有:
<:引入一個標記
&:引入一個字符實體
>:結(jié)束一個標記
● 在屬性值中應(yīng)考慮的特殊字符有:
":在以雙引號包裹屬性值的情況下,"標記了屬性值的結(jié)尾。
':在以單引號包裹屬性值的情況下,'標記了屬性值的結(jié)尾。
空白字符:在屬性值沒有被任何引號包裹的情況下,空白字符標記了屬性值的結(jié)尾,比如空格、tab。
&:當(dāng)需要在屬性值中引入字符實體時,就需要使用&。
● 搜索引擎系統(tǒng)會在搜索結(jié)果頁面中包含一個再次運行搜索的鏈接,這個鏈接中會包含編碼過的搜索查詢字符串。這種情況下應(yīng)考慮的特殊字符有:
空格、tab以及換行符:它們標記了URL的結(jié)尾。
&:它標記一個字符實體,或者一個獨立的CGI參數(shù)。
非ASCII字符:就是ISO-8859-1編碼中ASCII碼大于128的字符,它們不允許在URL中使用。
%:無論服務(wù)器對由escape編碼的HTTP參數(shù)如何解碼,都必須過濾出字符%。
● 在 之間的內(nèi)容中應(yīng)考慮的特殊字符有:分號,圓括號,大括號以及換行符。
● 在服務(wù)器端腳本中應(yīng)考慮的特殊字符有:!
● 其他情況下應(yīng)考慮的特殊字符有:=。但注意,現(xiàn)有的攻擊事件還沒有利用過這個字符,但作為一個全面考慮,這里還是列出來。
另外,我們還要重視一種情況:其他附加字符也可能包含在特殊字符列表中。總之,Web開發(fā)者必須對應(yīng)用程序的輸入內(nèi)容進行檢查,以確定哪些字符會影響程序的執(zhí)行。
該文章轉(zhuǎn)載自1024k:http://www.1024k.cn/web/2007/200701/15408.html