對跨站腳本攻擊和跨站請求偽造之道的解析
以下的文章主要向大家描述的是對跨站腳本攻擊與跨站請求偽造之道的解析,你如果對跨站腳本攻擊與跨站請求偽造之道的解析有興趣的話你就可以點擊以下的文章進行觀看了,以下就是文章的詳細內容介紹,望大家借鑒。
這里談到的跨站漏洞利用主要包括跨站腳本攻擊、以及跨站請求偽造與其它的同源攻擊,這些攻擊都是目前極普遍的攻擊方式。
這篇文章可供Web開發(fā)人員閱覽,也可供網站管理員參考。 解析跨站腳本攻擊與跨站請求偽造之道 解析跨站腳本攻擊與跨站請求偽造之道[2] 解析跨站腳本攻擊與跨站請求偽造之道[3] 這里談到的跨站漏洞利用包括跨站腳本攻擊、跨站請求偽造以及其它的同源攻擊,這些攻擊都是目前極普遍的攻擊方式。這篇文章可供Web開發(fā)人員閱覽,也可供網站管理員參考。
同源策略最初是隨著網景公司的瀏覽器發(fā)布的,它的主要作用是規(guī)定瀏覽器和相關的編程語言應當如何處理安全問題。這種策略的主旨在于限制一個網站訪問其它網站上的函數(shù),同時又允許網站自由地控制URI上的代碼源。換句話說,僅準許腳本能夠處理同一域名上的其它腳本、80端口和協(xié)議。
同源攻擊主要涉及幾種攻擊方式:跨站腳本攻擊、跨站請求偽造、跨站請求跟蹤、網站緩存投毒、HTTP響應Splitting、HTTP請求Smuggling、HTML和JavaScript網絡掃描。
跨站腳本攻擊
跨站腳本攻擊是一種準許將惡意代碼注入到網頁中的安全漏洞。這種攻擊主要用于:
A、釣魚或者cookie竊取,目的是為了訪問受限信息。
B、為了惡搞、丑化其它網站或實施社交工程攻擊
C、在網站的客戶端上執(zhí)行惡意代碼
這種攻擊可以通過利用IMG標記來實施破壞或惡搞,如關閉用戶瀏覽器的窗口,然后打開一個既無菜單也無工具欄的窗口,并播放一些惡搞性的聲音。
1、攻擊原理及類型
那么,這種攻擊是如何進行的呢?總體說來,它分為兩種類型:其一是反射式攻擊,這種攻擊跟蹤網站通過cookies進行的身份驗證,這種網站一般都不太安全,容易遭受跨站腳本攻擊。使用社會工程(如告訴用戶“你中獎了!”),如果目標用戶受到誘騙,并單擊攻擊者注入到標準HTML代碼中的包含惡意代碼的鏈接,攻擊者就可以訪問用戶的cookie信息(會話和身份驗證信息等)。其二是存儲式攻擊,其原理是:假設某個網站利用后端數(shù)據庫作為搜索網頁的信息源,黑客們并不將惡意代碼注入到普通頁面中,而是將SQL代碼注入到這種數(shù)據庫中。于是,每次從后端數(shù)據庫中返回查詢結果時,都會包含著攻擊者的惡意代碼??梢韵胂?,這種攻擊并不是針對哪個客戶端,而是感染整個論壇的用戶組,并感染大量的容易輕信的受害者。
2、防范措施最重要的是要保護代碼。
你應當限制用戶輸入信息的顯示,實施過濾,僅顯示絕對需要的信息。建議你驗證并清理所有形式的數(shù)據、數(shù)據源,以及你無法直接控制的URL參數(shù)。
一個很實用的技巧是用HTML實體(如&)來代替特別字符。為了減少特定HTML字符的數(shù)量,你必須限制用戶輸入,僅準許用于網站的合法代碼段。例如,許多論壇通過運用標記讓用戶輸入大寫字符,但是典型情況下,這些站點并不準許你增添加自己的表單,所以不應當準許表單。此外,如果這些標記有特定的語法和值,那么你應當僅準許與其語法保持一致的值(例如,字體顏色是一個僅包含字母A-F或數(shù)字0-9的三個或六個字符的值,所以,如果你準許用戶輸入整個SQL語句,那么事情就糟了。)
此外,多數(shù)清理例程會用
標記來替換回車符和換行符,以及一些有害的單詞,如“script”,這雖然依賴于具體的應用程序,但是許多網站有理由使用這種單詞,所以這些措施很難普及。
下面給出幾個不安全的例子:
Python的例子:
print ""
ASP的例子:
將這種文本直接寫到HTML中會導致:
這里你可以看到的是合法的HTML,所以會得到處理:
下面給出幾個較安全的例子:
Python:
print cgi.escape("")
ASP:
跨站請求偽造
跨站請求偽造是另一種同源策略攻擊,它的目的是為了欺騙受害者加載一個包含惡意請求的網頁,要求用戶輸入其賬戶及口令等。這種欺騙依賴于用戶對其身份信息的信任。用戶一般會認為他們只是在執(zhí)行不同的任務,只不過是使用一種HTTP請求。攻擊者借用用戶自己的瀏覽器將攻擊發(fā)送給目標站點。
1、跨站請求偽造的原理
首先,攻擊者將達到惡意站點的鏈接發(fā)布到目標站點上,然后,就會有一些輕信的用戶瀏覽惡意網站,從而成為受害者,更有甚者,會成為其幫兇。在用戶受到誘騙將表單提交給原始的目標網站(最初被植入惡意鏈接的網站)時,用戶就會成為攻擊者的幫兇。因為用戶已經通過了身份驗證,所以目標網站會接受表單提交請求,并準許修改敏感數(shù)據,如用戶自己的口令或從網站上獲取關鍵的信息。
2、保護代碼
首先,要通過檢查REQUEST鏈接請求來限制對POST或Web應用程序的訪問。
注意:有些瀏覽器會有一個空的鏈接請求,這也應當被阻止。
因而,相互認證一般情況下是令牌化認證的請求,即如果數(shù)據包含著一個適當?shù)臋C密值,才可以接受粘貼數(shù)據。而且通過實行多個步驟的寫入過程或確認頁面會強化這種安全機制。
總結
同源策略是一個在多數(shù)瀏覽器中實施的概念,但它可被XSS攻擊利用(它利用了一個用戶對于某個網站或應用程序的信任),也可被XSRF利用(它利用了網站或應用程序對用戶的信任)。
那么,我們的策略簡單地說就是:絕不相信任何人!
不妨將信任看做是一個雙向的街道:你永遠不會知道哪個方向會出現(xiàn)車流。任何人都可以潛入到信任關系的中間,并濫用這種信任關系。
因而,我給出如下要點:
1、保護你的代碼和客戶端:對所有的遠程數(shù)據輸入都進行驗證或過濾。
2、警告用戶不要隨意瀏覽,要教育用戶能夠確切地知道自己正在被導航到哪里。上述的相關內容就是對解析跨站腳本攻擊與跨站請求偽造之道的描述,希望會給你帶來一些幫助。
【編輯推薦】