XSS跨網站指令碼攻擊解決方案
如果使用者表單輸入一些內容,……特別是一些內容比較多的表單項,且無固定格式 ,如地址,文章內容……此時使用者可以輸入JS代碼等來執行
STEP1:在設計方案上,輸入項要儘可能檢測格式並限制長度。要有服務端檢測,不能依賴用戶端檢測。在資料庫設計上要限制欄位長度……
輸出頁面時需要進行HTML轉碼,如輸出地址內容
<td ><%=convert.html(cus.getAddress())%></td >
public static String html(String content) {
if(content==null) return "";
String html = content;
html = html.replaceAll( "&", "&"); //替換&號
html = html.replace( "\"", """); //" 替換雙引號
html = html.replace( "\t", " ");// 替換跳格
html = html.replace( " ", " ");// 替換空格
html = html.replace("<", "<");
html = html.replaceAll( ">", ">");
return html;
}
有些人是在入庫的時候做HTML編碼,這樣與原意不付,應該在出庫的時候轉碼,如果輸出載體為HTML頁面,則進行HTML轉碼……。如果是使用者控制項一類的,就可以不做HTML轉碼了。
真正麻煩的是,在一些場合我們要允許使用者輸入HTML,又要過濾其中的指令碼。Tidy 等HTML 清理庫可以幫忙……本文不討論這種情況 ……
STEP2: 檢測
主要對使用者輸入內容在顯示時的頁面進行檢測,照上面列個清單出來
STEP3:檢測結果紀錄表
STEP4: 根據檢測結果做修複,在紀錄表上記錄修複結果
STEP5:複測,在紀錄表上記錄複測結果