基礎防範XSS攻擊函式。
這兩天客戶的網站遭到XSS攻擊,原設計師並沒有進行任何SQL Injection或XSS的防範,這其實還蠻正常的,因為一般網站製作時程較趕,主要是功能完成客戶就急著上線了,這部分也就多多少少不會去注意到,只著眼在功能是否正常,況且有些設計者寫了幾年的網站也沒被駭客攻擊過,所以疏於防範我覺得算是合理,但還是希望能把對SQL Injection或XSS的防範寫成函式,或置入常用類別庫中,日後製作網站也不用多加注意也會有防範的效果了。
關於XSS攻擊的說明可以參考: 什麼是跨網站指令碼XSS攻擊? 或是 gipi大的這篇 : [ASP.NET]防止跨網站(XSS)指令碼攻擊
看完上面兩篇可以發現主要是一些javascript的標籤作怪,同SQL Injection的防範方式,寫入資料庫前需將其替換掉,以下分享一個小小的防範函式:
//HTML XSS防範
public string GetSafeH(object o)
{
if (o != null)
{
string o2 = (string)o;
if (o2.IndexOf("
這樣可以提供一些基礎的防範,底檔一些業餘的攻擊者算是綽綽有餘,專業一點的可能要在加強一下囉!
.NET本身也有防範XSS的工具 - AntiXSSV31,會過濾掉不合法的字元,IE瀏覽器也會主動提供一些防護呢
關於AntiXSSV31的說明可以參考這篇 : ASP.NET防XSS的好工具 - AntiXSSV31
|