Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ajax網頁的危機與防禦術 王寧疆 MCAD.NET/MCSD.NET/MCT/MVP 資策會教育訓練處.

Similar presentations


Presentation on theme: "Ajax網頁的危機與防禦術 王寧疆 MCAD.NET/MCSD.NET/MCT/MVP 資策會教育訓練處."— Presentation transcript:

1 Ajax網頁的危機與防禦術 王寧疆 MCAD.NET/MCSD.NET/MCT/MVP 資策會教育訓練處

2 大綱 故事的起源 傳統的網頁vs Ajax網頁 新興的駭客攻擊技術 重新評估Javascript的攻擊力 網站安全的新趨勢
Web 2.0精神與資訊安全

3 故事的起源 當您打開瀏覽器, 瀏覽Myspace.com社群網站某個人的部落格, 或是瀏覽雅虎的電子郵件, 隨著所瀏覽的網頁下載到您的電腦執行的Javascript悄悄地掃瞄您的網路, 判斷Router的廠牌, 然後傳送命令給Router, 打開無線網路, 關閉資料加密功能…在24小時內, 光是在美國境內, 就有一百萬人受到波及… 以上所說為真實的事件, 並非虛構

4 網頁程式與駭客攻擊 網頁程式可以直接被Internet使用者使用, 受到駭客攻擊的機會很高
只從網路與伺服器+防火牆方面加強安全性, 無法免除被駭客攻擊的恐懼 防火牆不能封鎖Web伺服器的80連接埠 SSL主要的作用在保護機密資料 程式開發者必須注意所開發的程式可能被攻擊的地方

5 網頁程式架構的複雜度易受攻擊 Web Server Application Server Database Server
Web Service Wireless 網頁 媒體庫 商業邏輯 內容服務 使用者資料 存取管制 異動資訊 企業資料 Browser

6 網頁程式安全漏洞的來源 Web應用程式的安全漏洞的三大來源: 網頁程式 Web管理 70%的攻擊來自 網頁程式 - Garner Web平台
Application Mapping Cookie Manipulation Custom Scripting Parameter Manipulation Directory Transversal Brute Force Cookie Poisoning/ Theft Buffer Overflow SQL Injection Cross-site scripting 檢查副檔名 常用檔名檢查 資料副檔名檢查 備份檢查 列舉目錄 目錄截斷 隱藏網站目錄 允許目錄瀏覽 Web平台 已知的安全漏洞

7 傳統的網頁vs Ajax網頁 傳統網頁的運作原理 Ajax網頁的運作原理 Ajax網頁開發技術 傳統的網頁vs Ajax網頁

8 傳統網頁的運作原理 以同步(Click and Wait)的方式處理網頁使用者的操作 使用者必須等待網頁處理完成(不夠敏捷)

9 傳統的地圖服務網頁 Expedia.com旅遊網

10 Ajax網頁的運作原理 以非同步的方式處理網頁使用者的操作 使用者不需要等待網頁處理完成(敏捷)

11 Ajax風格的地圖服務網頁 Virtual Earth

12 傳統的網頁vs Ajax網頁 Thin Client vs Rich Client Clear Box vs Black Box

13 Ajax網頁開發技術 Ajax:Asynchronous Javascript and XML的縮寫
Rich Client網頁解決方案(利用Javascript, DHTML+ DOM + CSS, XMLHttp, 和XML技術) 優點 省時, 省錢, 節省頻寬 使用者操作感覺友善 缺點 瀏覽器必須可以執行Active Scripting Javascript扮演極重要的角色

14 新興的駭客攻擊技術 新興的攻擊傳播媒介:連結網站(例如Myspace.com), 電子郵件(例如:Yahoo)
使用Ajax技術開發的網站更易受到攻擊, 例如使用Ajax技術製作的電子郵件收發網頁 更多的頻寬, 更多的資料交換與連結, 培養更多的駭客, 網站的問題只會更多 資訊安全的問題若不能解決, Web 2.0網頁的精神將令使用者未蒙其利, 先受其害

15 資料來源 IDC and IBM Systems Sciences Institute
Ajax網頁的安全考量 暴露較多的程式資訊 提供較傳統網頁更多的攻擊面 對XSS式駭客攻擊術有推波助瀾的效果 資料來源 IDC and IBM Systems Sciences Institute

16 資料來源 IDC and IBM Systems Sciences Institute
Ajax網頁易暴露程式原始碼 駭客可以經由檢視網頁原始碼的方式輕易獲取程式的資訊, 包括 變數名稱, 資料型態, 允許的範圍 函數名稱, 參數, 回傳值 流程控制 輸入資料驗証 使用者從了解網頁的功能(What to do), 進化成了解網頁如何完成功能(How to do) 資料來源 IDC and IBM Systems Sciences Institute

17 示範:檢視Ajax網頁的原始碼 啟動IE, 執行 [檢視 | 原始碼]功能

18 資料來源 IDC and IBM Systems Sciences Institute
Ajax網頁提供更多的攻擊面 傳統網頁的攻擊面 Form Input, Cookie, Header 參數(例如Query String), File, Database, … Ajax網頁暴露的攻擊面 Web Service提供的方法 Bridge (*.asbx) 資料來源 IDC and IBM Systems Sciences Institute

19 資料來源 IDC and IBM Systems Sciences Institute
查詢Web Service提供的功能 可以透過設定關閉查詢功能 <webServices> <protocols> <remove name="HttpPost"/> <remove name="HttpGet"/> <remove name="Documentation"/> </protocols> </webServices> 資料來源 IDC and IBM Systems Sciences Institute

20 示範:查詢Web Service功能

21 資料來源 IDC and IBM Systems Sciences Institute
對XSS式駭客攻擊推波助瀾 攻擊能夠以主動, 非同步, 不更新瀏覽器顯示的內容的方式進行攻擊或感染, 使用者不易察覺(衍然病毒), 伺服器亦難以判斷是否為使用者的行為 攻擊Myspace.com的XSS病毒發生於2005年10月 攻擊雅虎電子郵件的XSS病毒發生於2006年6月 XSS攻擊與Web平台和瀏覽器無關, 純粹是網頁程式製作不當 XSS驚人的擴散能力, 有必要重新檢視Javascript的攻擊力 資料來源 IDC and IBM Systems Sciences Institute

22 XSS基本攻擊原理 瀏覽內含惡意Javascript的網頁 網頁 內含惡意Javascript的網頁下載 到使用者的電腦中執行 網頁使用者
Web伺服器 惡意Javascript竊取資訊(例如Cookie資訊)後送往駭客網站 駭客伺服器

23 示範:XSS駭客攻擊

24 新的駭客攻擊技術的傳播能力 全球第一隻XSS病毒, 擴散程度創下記錄

25 重新評估Javascript的攻擊力 破壞網頁顯示的內容(改變網頁文字和圖形),包括重導網頁, 執行無窮迴圈…
竊取網頁使用者個人資料, 例如Cookie 記錄使用者的按鍵動作(keylogger), 抓取螢幕顯示內容(screen scraping) 掃瞄通訊埠 盜取剪貼簿(Clipboard)中的資料

26 盜取剪貼簿中的資料 在網頁中加入以下的Javascript就可以盜取剪貼簿(Clipboard)中的資料
<script Language="JavaScript"> var content = clipboardData.getData("Text"); alert(content); </script>

27 示範:盜取剪貼簿中的資料

28 示範:掃瞄連接埠

29 Ajax網頁抵禦攻擊之道 OWASP公佈十大網頁安全漏洞 資料輸入驗証的重要性
小心使用內含Javascript或HTML的Third-Party Gadget或Plug-In, 例如: Google AdSense Wikipedia – 維基百科 月曆

30 OWASP公佈十大網頁安全漏洞 未檢驗使用者輸入的資料 權限管制漏洞 身分驗証漏洞與Session管理不當
Cross Site Scripting漏洞 緩衝區溢滿 植入執行命令 錯誤處理不當 機密資料(包括金鑰, 密碼, 憑証)加密不當, 演算法選擇不當, 亂數產生不當… 癱瘓攻擊 不安全的設定, 啟用不需要的服務, 使用預設帳號, 預設密碼, 機密檔案存取權限管制不當…

31 資料輸入驗証基本原則 85%的攻擊肇因於疏於執行資料輸入驗証 基本原則 不可相信使用者輸入的資料 Client端驗証不算驗証
驗証資料型態, 資料內容值的範圍, 與資料長度 對輸入/輸出資料進行編碼 使用WhiteList不要使用BlackList(黑名單)

32 資料輸入驗証對象 對Form Input的驗証 對上傳檔案的驗証 對公開的網頁和Web Service功能的驗証
網頁輸入欄位, Get/Post參數, … 對上傳檔案的驗証 小心使用3rd Party的Library處理圖形檔案 對公開的網頁和Web Service功能的驗証 參數驗証, 身分驗証, 權限驗証, …

33 網站安全的新趨勢 駭客攻擊已經有自動化攻擊的趨勢, 例如使用搜尋引擎搜尋有安全漏洞的網站(Google Hacking), 或是利用SQL Injector, XSS-Proxy, XSS Shell等工具輕易地發起攻擊 使用防駭工具和漏洞測試工具協助提升網站的安全性, 可以有效彌補網站開發人員知識的不足和疏失

34 認識Microsoft Anti-XXS Library
符合使用工具防駭的世界潮流 和大部分的編碼工具不同的地方在於Microsoft Anti-XXS Library使用"principle of inclusions"技術有效阻絕XSS駭客攻擊 定義所有可以正常輸出的字元集合, 再對所有不能接受的字元加上編碼處理. 可以有效增強網站阻擋XSS攻擊的能力, 提升網站的安全性 利用功能強大的防駭工具彌補程式設計師經驗的不足

35 Microsoft Anti-XXS Library的功能
最新版本 : ver 1.5, 提供: 更多的Encoding方法, 除了HtmlEncode和UrlEncode方法外, 另外還提供了HtmlAttributeEncode, JavaScriptEncode, VisualBasicScriptEncode, XmlEncode, 以及XmlAttributeEncode等5個方法 支援Allow Partially Trusted Caller Attribute (APTCA) 說明文件 範例

36 使用Microsoft Anti-XSS Library
步驟 檢視ASP.NET網頁產生輸出內容的地方, 例如: Response.Write <% =… %> 檢視輸出內容中是否包含任何使用者輸入的資料, 例如: Application, Session, Cookie, 資料庫, Form欄位, QueryString 選擇編碼方法 對有問題的輸出內容執行編碼

37 選擇編碼方法的依據 視有問題的輸出內容被用在什麼地方而定
例如輸出的內容會被當成Attribute, 則使用HtmlAttributeEncode方法加以編碼 範例 //未經編碼 Literal1.Text = "<hr noshade size='[輸出內容]'>"; //經過編碼 Literal1.Text = "<hr noshade size='+ AntiXss.HtmlAttributeEncode("[輸出內容]") +"'>";

38 使用編碼方法注意事項 只能編碼一次 在輸出前才進行編碼 不正確的用法 正確的用法 String Input = TextBox1.Text;
// 進行編碼 Input = AntiXss.HtmlEncode(Input); // 處理使用者輸入的資料 // 輸出編碼後的內容 Response.Write( "The input you gave was"+Input); String Input = TextBox1.Text; // 處理使用者輸入的資料 // 輸出編碼後的內容 Response.Write( "The input you gave was" + AntiXss.HtmlEncode(Input)); );

39 對網頁輸出的內容加上編碼處理 加入參考 – 參考AntiXssLibrary.dll
引入Microsoft.Security.Application名稱空間 Import Namespace= "Microsoft.Security.Application" %> 使用HtmlEncode編碼方法 <%# AntiXss.HtmlEncode(Eval("Message")) %>

40 示範:Microsoft Anti-XSS Library

41 網頁防駭守則(一) 使用者守則 網頁程式設計師守則
小心點選 , 或IM中的超連結, 關閉瀏覽器的javascript, Java, ActiveX功能 網頁程式設計師守則 審慎驗証使用者輸入的資料, 注意各種可能的資料來源 防範重要的功能被自動化攻擊工具執行 限制Cookie不可被script讀取, 或是必須經由SSL連線傳送(利用HttpCookie類別的HttpOnly屬性) 對有問題的網頁輸出內容進行編碼

42 網頁防駭守則(二) 網站管理員守則 關閉伺服器未使用的功能, 包括通訊協定, 服務, SQL Server的xp_cmdshell, …
使用漏洞偵測工具定時偵測網站的安全漏洞, 詳見參考資料 使用自動化安全測試工具測試網站的安全強度, 詳見WhiteHat網站的說明(網址:

43 Ajax網頁防駭特別守則 避免在Master(主版頁面)中引用 .js與.css檔案
隔離Ajax網頁需要呼叫的網頁方法/Web Service方法與其他的XML Web Service提供的方法 關閉Web Service查詢WSDL規格的功能 盡量使用ASP.NET的註解語法, 不要使用HTML的註解語法 減少Web Service公開給外界使用的功能 減少暴露在Client端的控制邏輯

44 Web 2.0精神與資訊安全 Web 2.0的基本精神, 每一項對資訊安全都形成挑戰 未小心處理將嚴重影響資訊安全 開放 可擴充
開放使用者參與網頁內容編輯 未小心處理將嚴重影響資訊安全

45 複習 故事的起源 傳統的網頁vs Ajax網頁 新興的駭客攻擊技術 重新評估Javascript的攻擊力 網站安全的新趨勢
Web 2.0精神與資訊安全

46 參考資料 How to prevent XSS in asp.net
( Design Guidelines for Secure Web Applications ( SafeHtml - Anti-Cross Site Scripting (XSS) HTML parser (

47 下載 Microsoft Anti-Cross Site Scripting Library V1.5
( OWASP Top Ten Project – 十大駭客攻擊技巧解析 ( OWASP WebScarab Project – 網站安全功能測試工具 ( HacmeBank – 有安全漏洞的虛擬銀行網站 ( JBroFuzz – 穿透測試工具 (

48 範例下載 – 資策會台北中心 資訊專區

49 範例下載 – 台灣微軟網站 台灣微軟網站


Download ppt "Ajax網頁的危機與防禦術 王寧疆 MCAD.NET/MCSD.NET/MCT/MVP 資策會教育訓練處."

Similar presentations


Ads by Google