讀了《白帽子講 Web 安全》

zphhhhh發表於2017-04-24

書名:白帽子講 Web 安全
用時:五天
星級:★★★★半
簡評:這是一本入門級別講解 Web 安全的書。

這本書應該是和《黑客攻防技術寶典:瀏覽器實戰篇》相似的,我最初看了黑客寶典的大概 20%,由於內容偏深,就轉來先看白帽子,相比之下,白帽子更適合對 Web 安全不甚瞭解的小白。


第一篇:Web 安全之白帽子兵法

黑名單與白名單原則
設計安全方案時,最基本最重要的原則就是黑名單與白名單原則,要求我們更多的使用白名單原則,比如預防 XSS 攻擊的字串檢查,應該設計為允許使用 a、img等標籤(白名單),而不是禁止使用 script 等標籤(黑名單)。

縱深防禦原則
這個原則是說要在不同層次不同方面綜合實施對應的安全方案,比如網路環境、資料庫、OS 、Web 應用等不同方面,比如使用者輸入、資料展示等不同層次,考慮若已被入侵怎樣最小化損失。

資料與程式碼分離原則
資料與程式碼高耦合,就非常容易產生注入漏洞,XSS、SQL 等都是因為這個原因。SQL 注入是由於 SQL 語句與使用者資料字串拼接造成,若使用 SQL 引數化查詢(預編譯 SQL)則分離了資料與程式碼。

不可預測性原則
攻擊者經常會通過一些規律找到漏洞,比如 id 順次遞增,攻擊者知道了其中一個 id 就可能會對所有 id 發起攻擊。這時可使用 token、隨機、加密等實現不可預測性。

第二篇:客戶端安全

這一篇主要講了 XSSCSRF點選劫持 等瀏覽器中三種最常見的攻擊(我是看了黑客寶典的這部分感到非常吃力才轉來看白帽子),詳細而直白,對每種攻擊從攻擊原理、簡單的例子,寫到防禦方案,讀起來很順暢。對 HttpOnly 、CSP 、X-frame-options 、Referer 等一些安全相關的 HTTP 頭部 也有了更深的認識。這一篇也是我最想看到的內容,邊讀邊寫程式碼實踐邊查閱相關資料,很有感覺。

第三篇:伺服器安全

作為前端小白,對於伺服器安全,我會更加不瞭解一些。這一篇引用了較多的 PHP 及其他服務端語言程式碼,但是看懂還是可以的。收穫最大的是學習了認證與授權、DDOS 攻擊、注入攻擊。

認證與授權
在認證與授權這裡,結合阮一峰老師的博文《理解OAuth 2.0》搞明白了 openID 和 OAuth 的區別於聯絡:openID 解決的是認證問題,OAuth 解決的是授權問題。比如我們可以使用微博的 OAuth 授權其他網站訪問個人資料或者發微博,而 openID 表明使用者的唯一標識,使用者可以把 openID 告訴第三方網站,以表明自己是通過微博登陸的。

DDOS 攻擊
最難解決也無法根治的安全問題,DDOS 攻擊的本質是利用合理的請求造成資源過載,進而導致服務不可用。一般的解決方法可以有 限制賬戶頻率、限制 IP 頻率、驗證法等。

SYN Blood
想單獨說一下 SYN Blood。因為最近聽到了一個很好玩的關於面試的問題,是說幾年前面試官一般只問 TCP 的三次握手,後來又問了四次揮手,後來我們都會了,就開始問為什麼需要三次握手?為什麼揮手又需要四次?後來我們又會了,面試官又開始問 TCP 這樣設計有什麼缺陷?當然,終極問法是:如果可以,怎樣改進 TCP 可以解決/稍緩現在的麻煩/缺陷?沒有了解過 TCP 的面試者崩潰中...

言歸正傳,SYN Blood 就是由於客戶端向服務端傳送 SYN 包之後不再應答,服務端返回的 SYN/ACK 包找不到終點,服務端就會重試 3~5 次發包並等待一個 SYN Time(30s ~ 2min),如果同時出現大量這種請求,就會消耗服務端非常多的資源來處理這種“半連線”狀態,於是,出現了伺服器拒絕服務。

現在沒有很好的方案可以杜絕 DDOS 攻擊。可以參考博文:
TCP三次握手和四次揮手以及缺陷(詳細): http://blog.csdn.net/hacker00011000/article/details/52319111

第四篇:網際網路公司安全運營

貼目錄:把安全運營起來、漏洞修補流程、安全監控、入侵檢測、緊急響應流程等


這本書的前三篇滿滿的乾貨,非常值得一看。當然感覺有些內容仍然有所過時(大概 8%?)。另一本去年圖靈出版的新書《黑客攻防技術寶典:瀏覽器實戰篇》相較要稍難一點,但是裡面的內容卻也更新更全面,毛主席說得好,一切都是紙老虎,現在可以去看了 :)

相關文章