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