读《白帽子讲Web安全》之客户端脚本安全(一)
2019獨角獸企業重金招聘Python工程師標準>>>
【第2章 ?瀏覽器安全】
1、同源策略(Same Origin Policy)是一種約定,它是瀏覽器最核心也最基本的安全功能。
瀏覽器的同源策略,限制了來自不同源的“document”或腳本,對當前“document”讀取或設置某些屬性。
2、比如JS,來自不同協議、端口、子域名等是不同源的。host指的是域名或者IP地址。
需要注意,對于當前頁面來說,頁面存放JavaScript文件的域并不重要,重要的是加載JavaScript頁面所在的域是什么。
3、在瀏覽器中,<script>、<img>、<iframe>、<link>等標簽都可以跨域加載資源而不受同源策略的限制。但是<script>等標簽僅能加載資源,而不能讀、寫資源的內容。
4、掛馬:在網頁中插入一段惡意代碼,利用瀏覽器漏洞執行任意代碼的攻擊方式,在黑客圈子里形象地成為“掛馬”。
5、瀏覽器的多進程架構,將瀏覽器的各個功能模塊分開,各個瀏覽器實例分開,當一個進程崩潰時,也不會影響到其他的進程。
Google Chrome是第一個采取多進程架構的瀏覽器,它的主要進程分為:瀏覽器進程、渲染進程、插件進程、擴展進程。插件進程如Flash、java、pdf等與瀏覽器進程嚴格隔離,因此不會互相影響。
渲染引擎由Sandbox隔離,網頁代碼要與瀏覽器內核進程通信、與操作系統通信都需要通過IPC channel,在其中會進行一些安全檢查。
6、Sandbox即沙箱,計算機技術發展到今天,Sandbox已經成為泛指“資源隔離類模塊”的代名詞。Sandbox的設計目的一般是為了讓不可信任的代碼運行在一定的環境中,限制不可信任的代碼訪問隔離區之外的資源。如果一定要跨越Sandbox邊界產生數據交換,則只能通過指定的數據通道,比如經過封裝的API來完成,在這些API中會嚴格檢查請求的合法性。
7、惡意網址分為2類:掛馬網站、釣魚網站。
8、提供惡意網址黑名單的機構:
1)PhishTank是互聯網上免費提供惡意網址黑名單的機構之一,它的黑名單由世界各地志愿者提供,且更新頻繁。
2)Google也公開了其內部使用的SafeBrowsingAPI,以獲取Google的惡意網址庫。
【第3章 ?跨站腳本攻擊(XSS)】
詳情見“讀《白帽子講Web安全》之客戶端腳本安全(一)”
【第4章 跨站點請求偽造(CSRF)】
0、CSRF的本質:CSRF為什么能夠攻擊成功?其本質原因是重要操作的所有參數都是可以被攻擊者猜測到的。
1、CSRF的全名是Cross Site Request Forgery
2、請求時攻擊者偽造的,比如想刪除A在sohu上的博客,一般博主登陸后sohu博客后,再請求url:http://blog.sohu.com/manage/entry.do?m=delete&id=12345?,就能把編號為“12345”的博客刪除。攻擊者就在自己的域http://www.a.com/csrf.html?構造一個頁面,里邊一個img標簽是請求url的內容,然后引誘博主去電子自己的頁面,然后就能刪除那個帖子了。
上述攻擊者偽造的請求之所以能夠被搜狐服務器驗證通過,是因為用戶的瀏覽器成功發送了Cookie的緣故。
注意XSS的區別:XSS攻擊,通常指黑客通過“HTML注入”篡改了網頁,插入了惡意的腳本,從而在用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊。
3、瀏覽器所持有的Cookie分為兩種:一種是“Session Cookie”,又稱“臨時Cookie”;另一種是“Third-party Cookie”,也稱為“本地Cookie”。
兩者區別:“Third-party Cookie”是服務器在Set-Cookie時指定的 Expire 時間,只有到了Expire 時間后Cookie才會失效,所以這種Cookie會保存在本地; 而Session Cookie則沒有指定Expire 時間,所以瀏覽器關閉后,“Session Cookie”就失效了。
“Session Cookie”保存在瀏覽器進程的內存空間中,而“Third-party Cookie”則保存在本地。
在瀏覽網站的過程中,若是一個網站設置了Session Cookie,那么在瀏覽器進程的生命周期內,即使瀏覽器新開了Tab頁,Session Cookie也都是有效的(應該是同域)。
如果瀏覽器從一個域的頁面中,要加載另一個域的資源,由于安全原因,某些瀏覽器會阻止“Third-party Cookie”的發送。
4、P3P Header 是W3C制定的一項關于隱私的標準,全稱是 The Platfrom for Privacy Preferences.
如果網站返回給瀏覽器的HTTP頭中包含有P3P頭,則在某種程度上來說,將允許瀏覽器發送第三方Cookie。在IE下即使是<iframe>、<script>等變遷也將不再攔截第三方Cookie的發送。
在網站的業務中,P3P頭主要用于類似廣告燈需要跨域訪問的頁面。但是遺憾的是P3P頭設置以后,對于Cookie的影響將擴大到整個域中的所有頁面,因為Cookie是以域和path為單位的,但這并不符合“最小權限”原則。
5、CSRF 的GET、Post都有利用的可能。
6、CSRF蠕蟲。
7、CSRF的防御。
1)驗證碼:強制用戶必須與應用進行交互,避免在用戶不知情的情況下構造網絡請求。
2)Referer Check:這個缺陷在于,服務器并非什么時候都能讀取到Referer。
3)Anti CSRF Token:
在URL中,保持原參數不變,新增一個參數Token。這個Token值是隨機的,不可預測。
Token的生成算法要足夠安全,然后Token應該作為一個“秘密”,為用戶與服務器所共同持有,不能被第三方知曉。在實際應用時,Token可以放在用戶的Session中,或者瀏覽器的Cookie中。
【第5章 點擊劫持 ClickJacking】
定義:點擊劫持是一種視覺上的欺騙手段。攻擊者使用一個透明的、不可見的iframe,覆蓋在一個網頁上,然后誘使用戶在該網頁上進行操作,此時用戶將在不知情的情況下點擊透明的iframe頁面。通過調整iframe的位置,可以誘使用戶恰好點擊在iframe頁面的一些功能性按鈕上。
最簡單的就是,有的網站,一點擊就開始跳轉到廣告頁。
在CSRF中,如果出現用戶交互的頁面,則攻擊可能會無法順利完成。與之相反的是,點擊劫持沒有這個顧慮,它利用的就是與用戶產生交互的頁面。
1、分類
Flash點擊劫持
圖片覆蓋攻擊
拖曳劫持與數據竊取
ClickJacking3.0:觸屏劫持,比如智能手機上
2、防御方法
1)frame Busting
就是寫一段JS代碼,禁止iframe的嵌套。
2)X-Frame-Options
加一個HTTP頭,有3個可選值,值不同,瀏覽器對加載frame頁面的策略不同。
【第6章 HTML5安全】
1、新標簽的XSS可能:比如<video>
2、iframe的sandbox屬性
3、<a>和<area>標簽定義了一個新的Link Types:noreferrer
4、canvas的妙用
5、瀏覽器實現的同源策略(Same Origin Policy)限制了腳本的跨域請求。但互聯網的發展趨勢是越來越開放的,因此跨域訪問的請求也變得越來越迫切。同源策略給Web開發者帶來了很多困擾,他們不得不想方設法地實現一些“合法”的跨域技術,因此誕生了jsonp、iframe跨域等技巧。
6、postMessage 跨窗口傳遞消息
postMessage允許每一個window(包括當前窗口、彈出窗口、iframe等)對象往其他的窗口發送文本消息,從而實現跨窗口的消息傳遞。這個功能是不受同源策略限制的。
7、WebStorage
對于HTML5來說,在移動互聯網上的普及進程也許會更快,因此未來HTML5攻防的主戰場,很可能會發生在移動互聯網上。
轉載于:https://my.oschina.net/bluefly/blog/310711
總結
以上是生活随笔為你收集整理的读《白帽子讲Web安全》之客户端脚本安全(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下系统与硬件时钟管理
- 下一篇: HDFS DataNode 设计实现解析