XSS是Cross-site scripting,稱為跨站指令碼攻擊,通常使用的方式是JavaScript,以ASP.NET來說,每個頁面都預設防止輸入<、>符號,屬性預設ValidateRequest=True
表示是檢察對來自瀏覽器的輸入檢查危險值,但這只是最基本的,微軟有推出一個AntiXsshttp://www.microsoft.com/download/en/details.aspx?displaylang=en&id=325,可以對這方面做到相當程度的防護,
另外隨這瀏覽器安全性的升高,很多攻擊方式都會阻擋並跳出安全警示,但往往後門是開發者自己開的,例如很多情況下,會在網頁上使用html編輯器,如fckeditor、ckeditor、...等,這些就是開發給使用者編輯html使用的,例如後台上稿到前台,使用者希望用視覺化的輔助工具,因此這個工具就變成常用的做法,但是若是放在後台,也就是只有特定的使用者能登入使用,一般使用者只能瀏覽前台,這是後台的登入安全控管機制就要相當的嚴密,若是把這種工具放到前台讓一般使用者使用,那根本是讓人練習攻擊的天堂..
以fckeditor來說,包括很多公家機關網站都在用,之前甚至有人發現總統府的網站根本不設防(這網路上可查詢的到),也用了這個東西,因為它是公開工具,任何人都可以研究他,若是放在網路上使用,一般會將上傳檔案的功能關閉,但很多發包公司,尤其是機關單位,花了大筆的公帑,弄出來的網站,根本是經不起考驗,因為浪費太多心力在公文的制式往來、文書程序、卻忽略了實質的安全性和功能性,驗收程序一大堆,但都是制式,驗收出來的東西,根本讓人搖頭,就擺到網路上..
以下列的例子來說
body {background-image: exp/**/ress/**/ion(alert("oh my god"));}
body {background-image: expression(location.replace('http://www.google.com.tw'));}
若是一個留言板或是討論區可以隨意輸入html js css,那當其他人瀏覽到者個網頁時,就會發現很多奇怪的事情,上述的方法可以輕易的組合動態產生並插入個iframe,當然還有很多,
例如:
<isindex type=image src=1 width=0 height=0 onerror=alert('what~happen')>
其他的就慢慢的自行研究,但研究的目的是在於知道如何防護,而不是做些非法的事情,
可以自行找尋相關書籍研讀,此處指點到為止,怕有無聊人士,會到處去測試,或做不良的用途,總之按照正確的觀念去開發網站,做到應有的防護,如文中一開始提到的ASP.NET的防護方式,和元件,就可多一層保障.