[ASP.NET]基礎防範XSS攻擊函式

基礎防範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("",
                            StringComparison.InvariantCultureIgnoreCase);
                        o2 = o2.Replace(o2.Substring(index, 9), " !-->");
                    }
                }
                return o2;
            }
            return string.Empty;
        }

 

這樣可以提供一些基礎的防範,底檔一些業餘的攻擊者算是綽綽有餘,專業一點的可能要在加強一下囉!

.NET本身也有防範XSS的工具 - AntiXSSV31,會過濾掉不合法的字元,IE瀏覽器也會主動提供一些防護呢 smiley

關於AntiXSSV31的說明可以參考這篇 : ASP.NET防XSS的好工具 - AntiXSSV31

 

 

分享


站作網站設計工作室 SiteMak Studio
Shinyo Ho 
Founder / Developer
email:shinyo.her@gmail.com|web:www.sitemak.com.tw