讀《白帽子講web安全》 ——筆記
第二章 瀏覽器安全
什麼是同源策略?
同源策略,它是由Netscape提出的一個著名的安全策略。
現在所有支援JavaScript 的瀏覽器都會dao使用這個策略。
所謂同源是指,域名,協議,埠相同。
當一個瀏覽器的兩個tab頁中分別打開來 百度和Google的頁面。
當瀏覽器的百度tab頁執行一個腳本的時候會檢查這個腳本是屬於哪個頁面的。
即檢查是否同源,只有和百度同源的腳本才會被執行。
如果非同源,那麼在請求數據時,瀏覽器會在控制台中報一個異常,提示拒絕訪問。
同源策略的作用:
瀏覽器的同源策略,限制了來自不同源的文件或腳本,對當前文件讀取或設置某些屬性。
瀏覽器提出「Origin(源)」這一概念,來防止瀏覽器的頁面行為發生混亂,不同源的對象無法互相干擾。
當a.com通過程式碼<script src=//b.com/b.js ></script>載入了b.com上的b.js,但是由於b.js運行在a.com頁面中,所以b.js的源就是a.com而非b.com(對當前頁面而言)
當帶「src」屬性的標籤需要跨站載入時,瀏覽器會發起一次GET請求。瀏覽器會限制其js的許可權,使其不能讀or寫返回的內容。
如果XMLHttpRequest能跨域訪問資源,則會導致敏感數據泄露,從而發生安全問題。
XMLHttpRequest跨域訪問標準:通過目標域返回的HTTP頭來授權是否允許。 方案安全基礎:JS無法控制HTTP頭。
瀏覽器沙箱(Sandbox):
Sandbox設計目的:為了讓不可信任的程式碼運行在一定的環境中,限制不可信任的程式碼訪問隔離區之外的資源。emmmmm,有點像新冠隔離哈哈哈哈哈。
Google Chrome 的 Sandbox架構
多進程架構最明顯的好處就是在瀏覽器發生崩潰時,多進程瀏覽器只會崩潰當前Tab頁,對其他頁面沒有影響
2.3惡意網址攔截
對處於「黑名單」的惡意網址進行攔截。常見的惡意網站:一類是掛馬網站(這類網站通常包含惡意的腳本如JS或Flash,通過利用瀏覽器漏洞來執行shellcode,在電腦中植入木馬);另一類釣魚網站(通過模仿知名網站的相似頁面來欺騙用戶)。
主流瀏覽器開始支援EV SSL證書,以增強對安全網站的識別。
2.4高速發展的瀏覽器安全
今天瀏覽器仍在不斷更新,微軟在IE8中推出的XSS Filter功能,可以修改XSS攻擊的腳本中的關鍵字,使其攻擊無效,並對用戶彈出提示框。
使用CSP的方法如下,插入一個HTTP返回頭:
X-Content-Security-Policy:policy
其中policy的描述很靈活,比如:
X-Content-Security-Policy:allow ‘self’ *.mydomain.com
這樣瀏覽器將信任來自mydomain.com及其子域下的內容。
隨著瀏覽器的發展,客戶的瀏覽體驗也越來越好,但隨之而來的是許多看似「友好」的功能可能會導致一些安全隱患
例如許多瀏覽器地址欄會對畸形的URL進行處理,www.google.com\abc會被識別為正常的www.google.com/abc
如果這類「友好」的功能被和黑客利用,可能會用於繞過一些安全軟體或模組。
第三章 跨站腳本攻擊(XSS)