tooken http://www.cnblogs.com/bukudekong/p/3829875.html
所謂攻擊,即黑客利用網(wǎng)站操作系統(tǒng)的漏洞和Web服務程序的SQL注入漏洞等得到Web服務器的控制權(quán)限,輕則篡改網(wǎng)頁內(nèi)容,重則竊取重要內(nèi)部數(shù)據(jù),更為嚴重的則是在網(wǎng)頁中植入惡意代碼,使得網(wǎng)站訪問者受到侵害。
常見的Web攻擊技術(shù):
- XSS(Cross-Site Scripting,跨站腳本攻擊):指通過在存在安全漏洞的Web網(wǎng)站注冊用戶的瀏覽器內(nèi)運行非法的HTML標簽或JavaScript進行的一種攻擊.重點是跨域和客戶端執(zhí)行
- SQL注入攻擊
- CSRF(Cross-Site Request Forgeries,跨站點請求偽造):指攻擊者通過設(shè)置好的陷阱,強制對已完成的認證用戶進行非預期的個人信息或設(shè)定信息等某些狀態(tài)更新.
CSRF的核心就是請求偽造,通過偽造身份提交POST和GET請求來進行跨域的攻擊。完成CSRF需要兩個步驟:
- 登陸受信任的網(wǎng)站A,在本地生成cookie
- 在不登出A的情況下,或者本地cookie沒有過期的情況下,訪問危險網(wǎng)站B
1. XSS的原理
XSS其實就是Html的注入問題,攻擊者的輸入沒有經(jīng)過嚴格的控制進入了數(shù)據(jù)庫,最終顯示給來訪的用戶,導致可以在來訪用戶的瀏覽器里以瀏覽用戶的身份執(zhí)行Html代碼,數(shù)據(jù)流程如下:攻擊者的Html輸入—>web程序—>進入數(shù)據(jù)庫—>web程序—>用戶瀏覽器。
2. XSS的攻擊方式
1.反射型 Reflected XSS
發(fā)出請求時,XSS代碼出現(xiàn)在URL中,作為輸入提交到服務器端,服務器端解析后響應,XSS代碼隨響應內(nèi)容一起傳回給瀏覽器,最后瀏覽器解析執(zhí)行XSS代碼。這個過程像一次反射,故叫反射型。
router.get('/', function(req, res, next) {
res.set('X-XSS-Protection',0);//禁止瀏覽器對XSS進行攔截
res.render('index', { title: 'Express',xss:req.query.xss});//獲取url中的參數(shù)做解析xss
});
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<div class="">
<%- xss %> <!--執(zhí)行xss腳本-->
</div>
</body>
瀏覽器地址欄輸入格式如http://localhost:3000/?xss=<img src="" onerror="alert(1)"/>
-
輸入xss等于一個<img>標簽,圖片會顯示在頁面中 彈出1
img攻擊.png -
如果xss腳本是一iframe,可以植入廣告
iframe.png
2.存儲型 Stored XSS
存儲型XSS和反射型XSS的差別僅在于,提交的代碼會存儲在服務器端(數(shù)據(jù)庫、內(nèi)存、文件系統(tǒng)等),下次請求目標頁面時不用再次提交XSS代碼。
res.render('index', { title: 'Express',xss:sql()});//sql語句操作
3.基于DOM或本地的XSS攻擊 DOM-based or local XSS
一般是提供一個免費的wifi,但是提供免費wifi的網(wǎng)關(guān)會往你訪問的任何頁面插入一段腳本或者直接返回一個釣魚頁面,從而植入惡意腳本。這種直接存在于頁面,無須經(jīng)過服務器返回就是基于本地的XSS攻擊。
3. XSS的防御措施
- 編碼
對用戶輸入的數(shù)據(jù)進行HTML Entity編碼 - 過濾
移除用戶上傳的DOM屬性,如onerror等,要過濾掉用戶上傳的事件
移除用戶上傳的Style節(jié)點、Script節(jié)點、Iframe節(jié)點等。如用戶上傳body{displat:none;}這樣我們的頁面什么都不顯示了。 - 校正
避免直接對HTML Entity解碼
使用DOM Parse轉(zhuǎn)換,校正不配對的DOM標簽
4. 攻擊目的和手段
攻擊者使被攻擊者在瀏覽器中執(zhí)行腳本后,如果需要收集來自被攻擊者的數(shù)據(jù)(如cookie或其他敏感信息),可以自行架設(shè)一個網(wǎng)站,讓被攻擊者通過JavaScript等方式把收集好的數(shù)據(jù)作為參數(shù)提交,隨后以數(shù)據(jù)庫等形式記錄在攻擊者自己的服務器上。
- 盜用 cookie ,獲取敏感信息。
- 利用植入 Flash ,通過 crossdomain 權(quán)限設(shè)置進一步獲取更高權(quán)限;或者利用Java等得到類似的操作。
- 利用 iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執(zhí)行一些管理動作,或執(zhí)行一些一般的如發(fā)微博、加好友、發(fā)私信等操作。
- 利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當?shù)耐镀被顒印?/li>
- 在訪問量極大的一些頁面上的XSS可以攻擊一些小型網(wǎng)站,實現(xiàn)DDoS攻擊的效果。
- 破壞頁面正常結(jié)構(gòu),插入惡意內(nèi)容.

