|
由于使用了較短的URL把冗長的URL隱藏了起來,這樣就更容易獲取人們(甚至一些老道的計算機用戶)的信任,從而單擊惡意鏈接,例如,對于下面這個容易露餡的HTML注入:
http://search.engine.com/search?p=
我們可以把它映射成一個單獨的URL,如下所示:
http://tinyurl.com/2optv9
目前,就算是警惕性很高的計算機用戶也很少有人知道類似的TinyURL的提供URL縮短服務的站點。這樣,我們可以通過不太流行的提供URL縮短技術(shù)的Web應用程序獲取更多有經(jīng)驗的計算機用戶的信任,從而使他們?nèi)ズ翢o疑慮的點擊我們的鏈接;此外,我們也可以創(chuàng)建自己的web頁面,并在其中放入下列內(nèi)容:
注意,document.location的字符串中的標簽在上述JavaScript被執(zhí)行之前是作為HTML出現(xiàn)的。對于POST方式的HTML注入,您可以編寫下面的代碼:
〈html〉 〈body〉 〈!-- something distracting like a cute kitten --〉 〈img src=cuteKitten.jpg〉 〈!-- and some HTML injection --〉 〈form action="http://search.engine.com/search" method="POST" name="evilForm"〉 〈input type="hidden" name="p" value="〈script〉a_lert(1)〈/script〉"〉 〈/form〉 〈script〉 document.evilForm.submit() 〈/script〉 〈/body〉 〈/html〉
現(xiàn)在,把上述代碼放到您自己的Web站點或者blog中——如果沒有的話,現(xiàn)在有許多免費的Web站點以及blog托管站點可用。 一種不錯的隱蔽技術(shù)是濫用IE的MIME類型不匹配問題。例如,創(chuàng)建一個文本文件,將其命名為cuteKitten.jpg,然后放入下列內(nèi)容:
〈iframe style="display:none" src="http://search.engine.com/search?p=〈script〉a_lert(1)"〉〈/iframe〉 〈img src="someCuteKitten.jpg"〉
上載cuteKitten.jpg,例如放到http://somwhere.com/cuteKitten.jpg。當用戶點擊該鏈接時,IE會認出cuteKitten.jpg根本就不是一張圖像,所以它繼而將其作為HTML進行解釋。這樣在顯示圖像someCuteKitten.jpg的時候?qū)嶋H上會在后臺利用一個注入的HTML代碼。
最后,攻擊者只要注冊一個聽起來很正規(guī)的域名并且將該html注入寄放在該域名中即可。例如,googlesecured.com就是一個看上去很真可信的域名。
八、促使用戶單擊注入的HTML代碼
利用“免費色情圖片”以及“偉哥甩賣”來引誘別人已經(jīng)成為過去,現(xiàn)在,攻擊者通常會促使用戶去做一些普通大眾經(jīng)常做的事情,諸如單擊一個新聞鏈接、欣賞一副可愛的小貓的圖片等等,當然使用的方法在前面我們已經(jīng)說過了。
例如,快到情人節(jié)了,大多數(shù)年輕人都希望給愛人一個驚喜。攻擊者就會考慮利用“閱讀本文以了解如何您的愛人一個與眾不同的情人節(jié)”之類的文字來誘惑用戶單擊鏈接。借助于XSS蠕蟲,如果人們看到這封郵件來自其好友的話,那么人們會毫不猶豫地點擊它。
然而,攻擊者放入的文字越多,越容易引起潛在受害者的疑慮。現(xiàn)今,最有效的信件應當只發(fā)給潛在的受害者一個鏈接,而根本不附加任何文字。好奇是人類的本性,在這種強烈的本能的驅(qū)使下,點擊該鏈接將大有人在。
至此,攻擊手法的介紹已經(jīng)告一段落,下面開始簡要介紹針對跨站腳本攻擊的防御措施。
九、防御跨站點腳本攻擊
為了防御XSS攻擊,開發(fā)人員必須謹慎處理由用戶提供的并且又反過來提供給用戶的那些數(shù)據(jù)。這里所說的“用戶提供的數(shù)據(jù)”應該定義為所有從外部網(wǎng)絡連接發(fā)送給Web應用程序的那些數(shù)據(jù)。
它可以是登錄時用HTML表單提交的用戶名,一個后臺的Ajax請求、一封電子郵件、乃至http報頭。要把所有這些數(shù)據(jù)都看作是從外部網(wǎng)絡連接進入Web應用程序的有潛在危險的數(shù)據(jù)。
對于所有由用戶提供的隨后又通過HTTP應答(諸如Web頁面以及AJAX響應(HTTP響應碼200)、頁面未找到錯誤(HTTP響應碼404)、服務器錯誤(類似的HTTP 響應碼502)、重定向(例如HTTP 響應碼302,等等)回顯給用戶的那些數(shù)據(jù),開發(fā)人員必須采取下列措施之一: |
|
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|