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