《Web前端黑客技術解密》讀書筆記(第三、四、五章)

weixin_34247155發表於2016-11-08

本文地址:http://www.jianshu.com/p/486b3a10efb2

第三章 前端黑客之XSS

XSS型別

XSS有三類:反射性XSS(也叫非持久型XSS)、儲存型XSS(也叫持久型XSS)和 DOM XSS

  • 反射性XSS

發出請求時,XSS程式碼出現在URL中,作為輸入提交到服務端,服務端解析後響應,然後XSS出現在響應,然後瀏覽器解析執行。

// 構造url http://foo.com/reflect.php?x=<script>alert(1)</script>
// 還可以構造base64加密方式
x=data:text/html;base64,PHNjcmlwdD5hbGVydCgnRVZBTCEhIScpPC9zY3JpcHQ+
  • 儲存型XSS

提交資料會儲存在服務端,比較隱蔽

常見輸入點

  • document.URL
  • document.URLRnencoded
  • document.location(及location其他屬性)
  • document.referrer
  • window.location
  • window.name
  • xhr(請求相關資料)
  • document.cookie
  • 表單值

常見輸出點

直接輸出HTML內容

  • document.write()
  • document.writeln()
  • document.body.innerHtml=...

修改DOMshu樹及事件

  • document.forms[0].action= ...
  • document.attachEvent()
  • document.create()
  • document.execCommand()
  • document.body
  • window.attachEvent()

替換document URL

  • document.location=...
  • document.location.hostname=...
  • document.location.replace
  • document.location.assign()
  • document.URL=...
  • window.navigator...

開啟或修改視窗

  • document.open
  • window.open
  • window.location.href=...

直接執行指令碼

  • eval
  • setInterval
  • setTimeout

第四章 前端黑客之CSRF

全稱 Cross Site Request Forgery(跨站請求偽造)

偽造請求

偽造GET

正常網站 a.com,惡意網站 b.com,在b站通過建立imgscriptlink等標籤,誘惑使用者訪問b站,就跨站傳送GET請求

注意

  • 如果使用者在a.com中是登陸的,在跨站請求時也會帶上cookie等相關資訊,請求頭只有 referer 不同。
  • 本地Cookie與記憶體Cookie在這種CSRF攻擊中對於IE瀏覽器有些不同,其不允許a網站的本地Cookie在跨域中帶上,除非在HTTP響應中設定P3P(Platform for Privacy Preferences)。非IE沒有這個限制

偽造POST

通過在惡意網站建立 form 新增 form的method為post,可以做到偽造POST請求,其他請求也類似

攻擊型別

按攻擊方式分為:HTML CSRF攻擊、JSON HiJacking攻擊和Falsh CSRF攻擊

HTML CSRF攻擊

  • HTML

通過設定 src/href 等地址都可以發起GET請求

<link href=''>
<img src=''>
<img lowsrc=''>
<img dynsrc=''>
<meta http-equiv='refresh' content="0; url=''">
<iframe src=''>
<frame src=''>
<script src=''></script>
<bgsound src=''>
<embed src=''>
<video src=''>
<audio src=''>
<a src=''></a>
<table background=''></table>
// ...
  • CSS
@import ''
background:url('')

對於POST請求只能通過 form 形式

JSON HiJacking

對AJAX響應中最常見的JSON資料型別進行劫持攻擊。尤其是JSONP形式url中的callback

Falsh CSRF攻擊

第五章 前端黑客之介面操作劫持

介面操作劫持分為三種

點選劫持(Clickjacking),拖動劫持(Drag & Drop jacking),觸屏劫持(Tapjacking)

  • 在瀏覽器中,拖放操作是不受“同源策略”限制的,拖動這些連結的過程中可能會有session keytoken

劫持原理

透明層+iframe

  • 拖放通過dataTransfer物件(有個getData(), setData()方法)

  • 拖放函式有:

    • 滑鼠拖動一個滑鼠時:ondrag,ondragstart,ondragend
    • 將物件拖動到一個有效的目標時,目標物件會觸發:ondragenter,ondragover,ondragleave,ondrop
  • 很多瀏覽器,尤其是移動端,可以滑動跨域

附原書購買地址: http://item.jd.com/11181832.html

相關文章