Web安全

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ù):

  1. XSS(Cross-Site Scripting,跨站腳本攻擊):指通過在存在安全漏洞的Web網(wǎng)站注冊用戶的瀏覽器內(nèi)運行非法的HTML標簽或JavaScript進行的一種攻擊.重點是跨域和客戶端執(zhí)行
  2. SQL注入攻擊
  3. 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的防御措施

  1. 編碼
    對用戶輸入的數(shù)據(jù)進行HTML Entity編碼
  2. 過濾
    移除用戶上傳的DOM屬性,如onerror等,要過濾掉用戶上傳的事件
    移除用戶上傳的Style節(jié)點、Script節(jié)點、Iframe節(jié)點等。如用戶上傳body{displat:none;}這樣我們的頁面什么都不顯示了。
  3. 校正
    避免直接對HTML Entity解碼
    使用DOM Parse轉(zhuǎn)換,校正不配對的DOM標簽

4. 攻擊目的和手段

攻擊者使被攻擊者在瀏覽器中執(zhí)行腳本后,如果需要收集來自被攻擊者的數(shù)據(jù)(如cookie或其他敏感信息),可以自行架設(shè)一個網(wǎng)站,讓被攻擊者通過JavaScript等方式把收集好的數(shù)據(jù)作為參數(shù)提交,隨后以數(shù)據(jù)庫等形式記錄在攻擊者自己的服務器上。

  1. 盜用 cookie ,獲取敏感信息。
  2. 利用植入 Flash ,通過 crossdomain 權(quán)限設(shè)置進一步獲取更高權(quán)限;或者利用Java等得到類似的操作。
  3. 利用 iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執(zhí)行一些管理動作,或執(zhí)行一些一般的如發(fā)微博、加好友、發(fā)私信等操作。
  4. 利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當?shù)耐镀被顒印?/li>
  5. 在訪問量極大的一些頁面上的XSS可以攻擊一些小型網(wǎng)站,實現(xiàn)DDoS攻擊的效果。
  6. 破壞頁面正常結(jié)構(gòu),插入惡意內(nèi)容.

5. 模仿XSS攻擊

https://github.com/BubbleM/xss_demo

CSRF:http://blog.csdn.net/stpeace/article/details/53512283

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容