Asp.net Cross Site Script攻擊 解決辦法

摘要:Asp.net Cross Site Script攻擊 解決辦法

最近在想辦法去解決Cross Stie Script Attack~

先小小的解說一下什麼是Cross Site Script ~

假設~你今天的網站有個留言板~

那我今天是個無聊男子~

我在你的流言裡打入javascript~

例如:

那之後當有人要瀏覽你的這份留言時~開啟網頁後~不好意思~你就被種了一個子網頁在這頁面中~

然後這頁面會指向yahoo~當然這例子是沒有威脅性的~

那要是我指向的網頁是帶有病毒的呢?或者是一個釣魚網站呢?

凡事只要是script都可以被植入~就連最簡單的~我在你的留言板中留下

 

那瀏覽時就會跳出訊息~

那當你是javascript高手~可想而知這後果有啥~很好去突破你的個人資訊~

那要怎麼去解決呢?

首先~

很高興的是.net framework2.0中已經有幫忙注意這點了~(1.1並沒有)

當你在page物件中有個屬性叫ValidateRequest~當你把它設成true後~

每當potsback執行時~會先判斷你的輸入欄位中~是否有輸入html或者script的tag

當發現有的時候~直接出現錯誤說明這具有攻擊行為~

當然這是防止輸入的部份~能把這段攻擊碼值入你的系統中有很多方式~

所以output也要去防止~那微軟有個library叫Microsoft Anti-Cross Site Scripting Library V1.5

可至http://msdn.microsoft.com/en-us/library/aa973813.aspx中查閱~

這元件是用來防止output的~

剛剛以有玩過一下~

首先將AntiXssLibrary.dll加入參考至你的專案中~

using Microsoft.Security.Application;

那在你需要輸出的欄位中

Label1.Text =AntiXss.HtmlEncode( dt.Rows[0]["UserID"].ToString());

這樣在畫面上就只會顯示出你的攻擊碼~

就只把你的攻擊script當成一個字串而不是一個指令~

詳細可參考微軟的網站~

事實上它只是去做encode,但這就能做到基礎的防護了~

不只html~script也能encode~

在這分享給大家~也希望大家在codeing的時候能夠注意到這問題