仇昱
摘要:文章重點描述了在Web2.0的時代背景下,瀏覽器應用的安全問題,也給出了常用的基于瀏覽器端的攻擊原理以及解決辦法,以保證瀏覽器端應用的安全。
關鍵詞:Web2.0;瀏覽器;攻擊;安全威脅
如今使用的Web開發(fā)技術,都是采用的Web2.0技術規(guī)范。對于其前身Webl.O技術規(guī)范來講,其是最新的一類互聯(lián)網(wǎng)應用技術的集合,從內部主要的內容到外部的應用都發(fā)生了巨大改變。毫無疑問,Web2.0的核心技術是Ajax。Ajax技術是現(xiàn)今大部分Web瀏覽器所采用的技術集合,所有使用Ajax技術的Web網(wǎng)頁,其內容可以直接快速地更新,而不需要進行頁面刷新等多余的操作;也可以將改變后的信息,不通過任何的操作直接發(fā)送到服務器上;甚至還可以借助客戶端機器上的瀏覽器,直接響應從服務器端的JavaScript處理。Web應用采用了Ajax技術后,網(wǎng)絡上數(shù)據(jù)的交互變得更少了,Web服務器處理數(shù)據(jù)交互所花費的時間,也變得更短了,并且用戶明顯感覺到響應請求的速度更快了,加強了用4本W(wǎng)eb2.0技術的快速發(fā)展和運用,極大地提高了客戶端的交互能力,從而使得今后的Web系統(tǒng)將大量運用Ajax和JavaScnpt等技術。這些技術的運用,勢必使很多基于邏輯層上的業(yè)務全部都轉到了客戶端,從而讓整個Web應用系統(tǒng)暴露出一些嚴重的安全威脅,極大地提高用戶個人隱私泄漏的風險[1]。
1XSS攻擊1.1XSS攻擊的涵義
所謂XSS就是人們經(jīng)常討論的跨站腳本攻擊。這種既熱門又不太受重視的Web攻擊方式卻在當下極為流行,讓人防不勝防,成為瀏覽器領域里的一大威脅。這種攻擊方式主要作用于某些單一的社交網(wǎng)絡服務(SocialNetworkingSenaces,SNS)網(wǎng)站域,其原理是:非法用戶利用瀏覽器在解析Web頁面的時候,會不加思索地執(zhí)行頁面中的代碼,從而使得非法者故意向Web頁面中加入一些非法的指向惡意鏈接的超級文本標記語言(HyperTextMarkupLanguage,HTML)標簽或者是Java腳本代碼。當黑客利用這種攻擊方法向可信的原網(wǎng)頁鏈接中注入指向惡意的鏈接代碼的時候,只要用戶點擊此鏈接,內嵌程序就會被激活,并在受害者的電腦上自動運行,從而引導受害者執(zhí)行不安全的操作,導致用戶的敏感數(shù)據(jù)被偷走。
XSS攻擊可以讓用戶泄露的敏感數(shù)據(jù)有:(1)盜取各類用戶賬號及密碼,黑客通過利用XSS攻擊,盜取用戶的網(wǎng)站認證Cookie,利用竊取的Cookie,黑客可以在社交網(wǎng)絡平臺上得到用戶的網(wǎng)絡控制;(2)獲取企業(yè)數(shù)據(jù)的控制能力,包括對企業(yè)敏感數(shù)據(jù)的讀取、篡改、添加和刪除;(3)竊取企業(yè)具有重要商業(yè)價值的信息;(4)非法轉移用戶財產(chǎn),站點掛馬和強制發(fā)送毫無意義的電子郵件;(5)能夠控制其他受害者的計算機,向其他站點的網(wǎng)站進行攻擊[2]。
1.2XSS攻擊的防范
諸如此類的危害,唯一能完全杜絕XSS攻擊的方法,就是禁用腳本、圖片等標簽,顯然這是不靠譜的。在保證頁面內容豐富的前提之下,可以采用以下措施來預防XSS攻擊,盡量減少XSS造成的危害。
1.2.1輸入檢測
這就意味著要對用戶所輸入的全部數(shù)據(jù)進行檢測,過濾掉能夠引起腳本注入的特殊字符;或者在編寫HTML文檔的時候,過濾掉有關腳本等字樣的關鍵字;或者在錄入數(shù)據(jù)的時候,將其數(shù)據(jù)長度限制固定住,同時也要考慮到惡意攻擊者,會使用其他數(shù)據(jù)的進制編碼,來進行數(shù)據(jù)錄入。因此,在要對用戶錄入的數(shù)據(jù),進行輸入校驗的時候,同時也要想到在輸入數(shù)據(jù)的時候,入侵者會想方設法地繞開美國信肩、交換標準代碼(American Standard Codefor Information Interchange,ASCII),而采用其他進制編碼。
1.2.2輸出編碼時要加密
如果要將用戶錄入的數(shù)據(jù)輸出到目標頁面中,只要在其輸出之前利用第三方編譯工具,首先分析這些數(shù)據(jù);然后使用加密程序,對這些數(shù)據(jù)進行加密處理;最后將加密好的數(shù)據(jù),再輸出到目的頁面中。這樣,即便是用戶編寫一些HTML的腳本,但是通過第三方編譯工具的解析,也可以轉變成了普通的字符,而不會轉換成為目的頁面的HTML代碼的一部分,在瀏覽這樣的頁面時就不會執(zhí)行此類代碼,從而提高了數(shù)據(jù)的安全性。
1.2.3Cookie要進行必要的防盜
對于儲存在用戶本地客戶端上的數(shù)據(jù)而言,Cookie則采取以下的措施進行必要的防盜。首先,要最大限度地避免在受害者本地客戶端上的Cookie中泄露隱私,如用戶名、密碼等;其次,可以使用MD5算法對用戶的本地客戶端的Cookie信息進行多次哈希散列加密后存儲;再次,將Cookie和IP地址進行綁定,這是為了防止重放攻擊,還可以防止攻擊者冒充正常用戶的身份。
1.2.4嚴格限制URL的訪問
在執(zhí)行頁面腳本代碼的過程中,配置一個攔截器,判斷其有沒有權限訪問這個ACTION,沒有的話直接跳轉到指定的可信頁面。這樣在執(zhí)行鏈接跳轉的時候,就不會跳轉到其他非法且可疑的惡意頁面上。
1.2.5用戶應該注意的事宜
對于普通的網(wǎng)絡應用用戶來講,只要做到以下3點就能避免XSS攻擊。首先,不要輕易相信任何電子郵件和網(wǎng)頁廣告中的不安全、不可靠或是可疑的鏈接。此類鏈接很有可能就會引起反射型的XSS攻擊,這樣會允許用戶訪問一些不安全的網(wǎng)頁,并導致敏感信息泄漏。其次,腳本應該在不必要的情況下禁止自動運行。再次,使用一些具有XSS篩選的瀏覽器,這些瀏覽器將會提示并阻止頁面中的XSS注入。
2CSRF攻擊
2.1CSRF攻擊的涵義
CSRF全稱Cross-siterequestforgery,中文名是跨站請求偽造,同時也可以被稱為“OneClickAttack”或是“Session Ridmg”,而CSRF和XSRF是它的縮寫形式。其使用冒名頂替的方式,向受害者發(fā)送被信任用戶的請求,利用受信任的網(wǎng)站,誘導受害者進行非法操作,進而獲取受害者的敏感信息。endprint
瀏覽器的跨站點請求是合法的,很難在這個級別的瀏覽器上防止CSRF攻擊,所以CSRF攻擊比起XSS更具有危害性。相對于CSRF攻擊的防御來看,目前主要是從服務器端和客戶端兩個方面來防御。但從防御的效果來看,從服務器端來防御的效果比在客戶端的效果要好很多,如今一般的CSRF防御絕大部分是在服務器端進行。
2.2CSRF的防御
現(xiàn)今有很多技術都可以在服務器端和客戶端上防御CSRF攻擊,但總體思路是類似的,就是在客戶端上添加一偽隨機數(shù),再在服務器端進行驗證。
2.2.1Cookies散列
Cookies散列是所有表單都包含相同的偽隨機值,這個方法可能是最簡單和最快捷的解決方法。因為攻擊者是不可能、也無法獲得被攻擊者的Cookies中的內容,那么與表單相關的數(shù)據(jù)也就無法構建了,也導致相應的數(shù)據(jù)表單構建失敗。向表單里添加哈希散列值,用來驗證這是否是用戶發(fā)送的請求,然后在服務器端執(zhí)行哈希值(Hash)驗證。
2.2.2驗證碼
這個方法是在用戶每次提交數(shù)據(jù)的時候,會要求用戶填寫一個圖片上隨機產(chǎn)生的一組字符串。該解決方案可以徹底解決CSRF攻擊。然而,就個人而言,似乎使用不是很好,驗證碼圖片在使用時,會涉及一個名為MHTML的Bug,可能會在某些版本的MicrosoftIE中受到影響,除此以外其也會降低用戶的體驗。
2.2.3One-TimeTokens
One-TimeTokens是指一次性令牌,不同形式包含不同的偽隨機值。如果需要實現(xiàn)一次性令牌,則需要了解并行會話的兼容性。如果用戶在網(wǎng)站上一次性打開兩種不同的表單,CSRF的防御保護就不應影響其對任何形式的提交??紤]到每個形式表單加載時發(fā)生的情況,并且站點生成偽隨機值以覆蓋先前的偽隨機值。因為所有其他表單都包含非法偽隨機值,用戶可能會成功提交其最終被打開的表單,所以必須注意所有的操作,應該保證CSRF的防范措施不影響使用多個瀏覽器窗口瀏覽網(wǎng)頁或標簽瀏覽器[3]。
3Clickjacking攻擊
3.1ClickJacking攻擊的涵義
Clickjacking又是一種不容忽視的Web攻擊方式,俗稱點擊劫持。由于這種攻擊方式要求與用戶互動不停地互動,因此增加了其攻擊成本,但實際上卻又的的確確可以應用到欺詐、釣魚等Web攻擊中來。
Clickjacking攻擊是一種“偽裝”攻擊,采用視覺欺騙的手段來達到獲取敏感信息的一種方法。準確來說,通過視覺上的欺騙,使得用戶原本要點擊A,但事實上卻點擊的是B,導致最終的結果是點擊B之后達到了某種惡意的目的。其基本的實現(xiàn)原理是:在HTML中使用多個或單個透明的、不可見的嵌入式的框架,覆蓋在原始網(wǎng)頁的頂層,然后誘使受害者在該頁面上進行操作。此時,用戶將處于未知的狀態(tài),并單擊包含透明內聯(lián)框架的頁面。通過調整內置框架頁面的位置,可以欺騙受害者點擊內置框架頁面上的某些功能按鈕。這樣,通過誘使受害者進行一系列復雜的操作后,攻擊者可以獲得想要的信息,這種攻擊更加具有隱蔽性和欺騙性。當前,唯一的辦法是禁用瀏覽器的腳本和插件功能。
3.2Clickjacking的其他形式
萬變不離其宗,Clickjacking的其他形式都是由最基本的文檔中的文檔出發(fā),點擊劫持(Clickjacking)發(fā)展出許多不同的“變種”。比如:攻擊者能借助Flash動畫,來實施的點擊劫持;甚至還能借助圖片覆蓋,來實施的欺詐攻擊;最令人嘆為觀止的應該是拖拽劫持和數(shù)據(jù)竊取了。攻擊者嘗試各種手段誘使受害者從隱藏的不可見的iframe中拖出或拉出攻擊者想要獲取的數(shù)據(jù),然后進入另一個頁面中,此時這個頁面攻擊者可以控制,從而達到竊取數(shù)據(jù)的目的。
這里有一個針對Gmail的驗證性測試的典型示例。其大致過程是:通過設計一個海豹頂球的小游戲,每次用戶點擊小球并拖拽到海豹頭頂上時,都會觸發(fā)相應的行為,這里在海豹和小球的頂部分別都隱藏了一個不可見的嵌入式的iframe,然后使用GetData方法獲取數(shù)據(jù),當用戶拖拽小球的時候,實際上是點中了隱藏在iframe中的數(shù)據(jù);當用戶停止拖拽小球,此時就將數(shù)據(jù)也放在了隱藏的iframe當中,從而就完成了數(shù)據(jù)竊取的過程。
4結語
Ajax,JavaScript以及網(wǎng)絡服務是Web2.0應用的3項重要的技術向量,隨著這些技術的應用,基于這些技術的攻擊方式層出不窮,也越來越“猥瑣”,單一的防御措施也顯得越來越脆弱。而忽視這些問題,下一個“泄密門”就離你不遠了。應對這些新的攻擊方式最好的方法是增加Web2.0的安全意識以及提高代碼操作的安全性和系統(tǒng)配置的安全性。
[參考文獻]
[1]周景平.從“泄密門”談瀏覽器安全[J].程序員,2012(3):45-46.
[2]金山.物聯(lián)網(wǎng)信息安全與隱私保護研究[J].計算機光盤軟件與應用,2013(16):38.
[3]何鵬飛.在大數(shù)據(jù)時代下IE瀏覽器安全漏洞與防范措施[J].黑龍江科技信息,2016(25):200.endprint