上週日講課,提到SQL Injection(數據注入、資料隱碼)攻擊 與 XSS攻擊
做一下補充。
先介紹一下相關的文章:
.....................................................................................................................................
檔案由此下載(v4.3)
http://www.microsoft.com/en-us/download/details.aspx?id=43126
Visual Studio的用戶,您也可透過Nuget取得最新版本
.....................................................................................................................................
- ><script>alert(document.cookie)</script>
- ='><script>alert(document.cookie)</script>
- "><script>alert(document.cookie)</script>
- <script>alert(document.cookie)</script>(註:竊取、窺視Cookie)
- <script>alert(vulnerable)</script>
- %3Cscript%3Ealert('XSS')%3C/script%3E(註:隱藏 < 與 >符號,趁機加入script程式)
- <script>alert('XSS')</script>
- <img src="javascript:alert('XSS')">(註:假借圖片檔名,輸入JavaScript指令)
- <img src="http://xxx.com/yyy.png" onerror="alert('XSS')">
- <div style="height:expression(alert('XSS'),1)" />(註:僅限 IE 有效)
Sanitizer的.GetSafeHtml()方法
如果遇見有人在HTML標籤裡面,偷偷加上JavaScript怎麼辦?
我們看看下圖的範例,竟然有人撰寫(輸入文字)把超連結<a>裡面加上onclick。
Sanitizer的 .GetSafeHtml()方法產生整個網頁
產生一個全新的網頁,不用擔心有人在表頭<head>裡面動手腳或是加入惡意指令。
Sanitizer的 .GetSafeHtmlFragment()方法,只過濾內容
我們常使用第三方的元件,例如 CKEditor這種線上的網頁編輯器,
讓使用者張貼文章或是留言時,可以使用 HTML碼,修改文字大小與顏色,甚至可以上傳圖片……
等一下!這不就是造成 XSS攻擊的元兇嗎!
沒錯,所以在網頁功能上,「便利」與「安全」往往是互斥的,這種兩難是無解的。
Sanitizer的.GetSafeHtmlFragment()方法就可以用在這種場合上,
如果您的網頁程式裡面使用CKEditor這種HTML編輯器元件,由它產生的結果文字
務必透過.GetSafeHtmlFragment()方法處理、淨化之後,才能寫入資料庫!
......還有其他的作法,請參閱相關的資訊。
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我-- mis2000lab (at) yahoo.com.台灣 或是 school (at) mis2000lab.net
................ Google+ https://plus.google.com/100202398389206570368/posts ........
................ YouTube (ASP.NET) 線上教學影片 http://goo.gl/rGLocQ
*********************************************************************************************
*** 第一天 的 ASP.NET MVC線上課程 免費看(5.5小時)***
************************************************************(歡迎索取,免費申請)*****