白帽子講Web安全

白帽子講Web安全

2012年電子工業出版社出版的圖書
《白帽子講Web安全(紀念版)》内容簡介:在互聯網時代,數據安全與個人隐私受到了前所未有的挑戰,各種新奇的攻擊技術層出不窮。如何才能更好地保護我們的數據?本書将帶你走進Web安全的世界,讓你了解Web安全的方方面面。黑客不再變得神秘,攻擊技術原來我也可以會,小網站主自己也能找到正确的安全道路。大公司是怎麼做安全的,為什麼要選擇這樣的方案呢?你能在本書中找到答案。詳細的剖析,讓你不僅能“知其然”,更能“知其所以然”。
  • 書名:白帽子講Web安全
  • 别名:
  • 作者:吳翰清
  • 類别:
  • 原作品:
  • 譯者:
  • 出版社:電子工業出版社
  • 頁數:432頁
  • 定價:69
  • 開本:16
  • 裝幀:平裝
  • ISBN:978-7-121-16072-1
  • 品牌:電子工業出版社
  • 語種:簡體中文
  • 類型:計算機與互聯網
  • 出版日期:2014年6月1日

出版信息

《白帽子講Web安全》

安全是互聯網公司的生命,也是每一位網民的最基本需求。一位天天聽到炮聲的白帽子和你分享如何呵護生命,滿足最基本需求。這是一本能聞到硝煙味道的書

内容簡介

在互聯網時代,數據安全與個人隐私受到了前所未有的挑戰,各種新奇的攻擊技術層出不窮。如何才能更好地保護我們的數據?本書将帶你走進Web安全的世界,讓你了解Web安全的方方面面。黑客不再變得神秘,攻擊技術原來我也可以會,小網站主自己也能找到正确的安全道路。大公司是怎麼做安全的,為什麼要選擇這樣的方案呢?你能在本書中找到答案。詳細的剖析,讓你不僅能“知其然”,更能“知其所以然”。

本書是根據作者若幹年實際工作中積累下來的豐富經驗而寫成的,在解決方案上具有極強的可操作性,深入分析了各種錯誤的解決方案與誤區,對安全工作者有很好的參考價值。安全開發流程與運營的介紹,對同行業的工作具有指導意義。

前言

在2010年年中的時候,博文視點的張春雨先生找到我,希望我可以寫一本關于雲計算安全的書。當時雲計算的概念正如日中天,但市面上關于雲計算安全應該怎麼做卻缺乏足夠的資料。我由于工作的關系接觸這方面比較多,但考慮到雲計算的未來尚未清晰,以及其他的種種原因,婉拒了張春雨先生的要求,轉而決定寫一本關于Web安全的書。

我的安全之路

我對安全的興趣起源于中學時期。當時在盜版市場買到了一本沒有書号的黑客手冊,其中coolfire 的黑客教程令我印象深刻。此後在有限的能接觸到互聯網的機會裡,我總會想方設法地尋找一些黑客教程,并以實踐其中記載的方法為樂。

在2000年的時候,我進入了西安交通大學學習。在大學期間,最大的收獲,是學校的計算機實驗室平時會對學生開放。當時上網的資費仍然較貴,父母給我的生活費裡,除了留下必要的生活所需費用之外,幾乎全部投入在這裡。也是在學校的計算機實驗室裡,讓我迅速在這個領域中成長起來。

大學期間,在父母的資助下,我擁有了自己的第一台個人電腦,這加快了我成長的步伐。與此同時,我和一些互聯網上志同道合的朋友,一起建立了一個技術型的安全組織,名字來源于我當時最喜愛的一部動漫:“幻影旅團”。曆經十餘載,“幻影”由于種種原因未能得以延續,但它卻曾以論壇的形式培養出了當今安全行業中非常多的頂尖人才。這也是我在這短短二十餘載人生中的最大成就與自豪。

得益于互聯網的開放性,以及我親手締造的良好技術交流氛圍,我幾乎見證了全部互聯網安全技術的發展過程。在前5年,我投入了大量精力研究滲透測試技術、緩沖區溢出技術、網絡攻擊技術等;而在後5年,出于工作需要,我把主要精力放在了對Web安全的研究上。

加入阿裡巴巴

發生這種專業方向的轉變,是因為在2005年,我在一位摯友的推薦下,加入了阿裡巴巴。加入的過程頗具傳奇色彩,在面試的過程中主管要求我展示自己的能力,于是我遠程關閉了阿裡巴巴内網上遊運營商的一台路由設備,導緻阿裡巴巴内部網絡中斷。事後主管立即要求與運營商重新簽訂可用性協議。

大學時期的興趣愛好,居然可以變成一份正經的職業(當時很多大學都尚未開設網絡安全的課程與專業),這使得我的父母很震驚,同時也更堅定了我自己以此作為事業的想法。

在阿裡巴巴我很快就嶄露頭角,曾經在内網中通過網絡嗅探捕獲到了開發總監的郵箱密碼;也曾經在壓力測試中一瞬間癱瘓了公司的網絡;還有好幾次,成功獲取到了域控服務器的權限,從而可以以管理員的身份進入任何一位員工的電腦。

但這些工作成果,都遠遠比不上那厚厚的一摞網站安全評估報告讓我更有成就感,因為我知道,網站上的每一個漏洞,都在影響着成千上萬的用戶。能夠為百萬、千萬的互聯網用戶服務,讓我倍感自豪。當時,Web正在逐漸成為互聯網的核心,Web安全技術也正在興起,于是我義無返顧地投入到對Web安全的研究中。

我于2007年以23歲之齡成為了阿裡巴巴集團最年輕的技術專家。雖未有官方統計,但可能也是全集團裡最年輕的高級技術專家,我于2010年獲此殊榮。在阿裡巴巴,我有幸見證了安全部門從無到有的建設過程。同時由于淘寶、支付寶草創,尚未建立自己的安全團隊,因此我有幸參與了淘寶、支付寶的安全建設,為他們奠定了安全開發框架、安全開發流程的基礎。

對互聯網安全的思考

當時,我隐隐地感覺到了互聯網公司安全,與傳統的網絡安全、信息安全技術的區别。就如同開發者會遇到的挑戰一樣,有很多問題,不放到一個海量用戶的環境下,是難以暴露出來的。由于量變引起質變,所以管理10台服務器,和管理1萬台服務器的方法肯定會有所區别;同樣的,評估10名工程師的代碼安全,和評估1000名工程師的代碼安全,方法肯定也要有所不同。

互聯網公司安全還有一些鮮明的特色,比如注重用戶體驗、注重性能、注重産品發布時間,因此傳統的安全方案在這樣的環境下可能完全行不通。這對安全工作提出了更高的要求和更大的挑戰。

這些問題,使我感覺到,互聯網公司安全可能會成為一門新的學科,或者說應該把安全技術變得更加工業化。可是我在書店中,卻發現安全類目的書,要麼是極為學術化的(一般人看不懂)教科書,要麼就是極為娛樂化的(比如一些“黑客工具說明書”類型的書)說明書。極少數能夠深入剖析安全技術原理的書,以我的經驗看來,在工業化的環境中也會存在各種各樣的問題。

這些問題,也就促使我萌發了一種寫一本自己的書,分享多年來工作心得的想法。它将是一本闡述安全技術在企業級應用中實踐的書,是一本大型互聯網公司的工程師能夠真正用得上的安全參考書。因此張春雨先生一提到邀請我寫書的想法時,我沒有做過多的思考,就答應了。

Web是互聯網的核心,是未來雲計算和移動互聯網的最佳載體,因此Web安全也是互聯網公司安全業務中最重要的組成部分。我近年來的研究重心也在于此,因此将選題範圍定在了Web安全。但其實本書的很多思路并不局限于Web安全,而是可以放寬到整個互聯網安全的方方面面之中。

掌握了以正确的思路去看待安全問題,在解決它們時,都将無往而不利。我在2007年的時候,意識到了掌握這種正确思維方式的重要性,因此我告知好友:安全工程師的核心競争力不在于他能擁有多少個0day,掌握多少種安全技術,而是在于他對安全理解的深度,以及由此引申的看待安全問題的角度和高度。我是如此想的,也是如此做的。

因此在本書中,我認為最可貴的不是那一個個工業化的解決方案,而是在解決這些問題時,背後的思考過程。我們不是要做一個能夠解決問題的方案,而是要做一個能夠“漂亮地”解決問題的方案。這是每一名優秀的安全工程師所應有的追求。

安全啟蒙運動

然而在當今的互聯網行業中,對安全的重視程度普遍不高。有統計顯示,互聯網公司對安全的投入不足收入的百分之一。

在2011年歲末之際,中國互聯網突然卷入了一場有史以來最大的安全危機。12月21日,國内最大的開發者社區CSDN被黑客在互聯網上公布了600萬注冊用戶的數據。更糟糕的是,CSDN在數據庫中明文保存了用戶的密碼。接下來如同一場盛大的交響樂,黑客随後陸續公布了網易、人人、天涯、貓撲、多玩等多家大型網站的數據庫,一時間風聲鶴唳,草木皆兵。

這些數據其實在黑客的地下世界中已經輾轉流傳了多年,牽扯到了一條巨大的黑色産業鍊。這次的偶然事件使之浮出水面,公之于衆,也讓用戶清醒地認識到中國互聯網的安全現狀有多麼糟糕。

以往類似的事件我都會在博客上說點什麼,但這次我保持了沉默。因為一來知道此種狀況已經多年,網站隻是在為以前的不作為而買單;二來要解決“拖庫”的問題,其實是要解決整個互聯網公司的安全問題,遠非保證一個數據庫的安全這麼簡單。這不是通過一段文字、一篇文章就能夠講清楚的。但我想最好的答案,可以在本書中找到。

經曆這場危機之後,希望整個中國互聯網,在安全問題的認識上,能夠有一個新的高度。那這場危機也就物有所值,或許還能借此契機成就中國互聯網的一場安全啟蒙運動。

這是我的第一本書,也是我堅持自己一個人寫完的書,因此可以在書中盡情地闡述自己的安全世界觀,且對書中的任何錯漏之處以及不成熟的觀點都沒有可以推卸責任的借口。

由于工作繁忙,寫此書隻能利用業餘時間,交稿時間多次推遲,深感寫書的不易。但最終能成書,則有賴于各位親朋的支持,以及編輯的鼓勵,在此深表感謝。本書中很多地方未能寫得更為深入細緻,實乃精力有限所緻,尚請多多包涵。

關于白帽子

在安全圈子裡,素有“白帽”、“黑帽”一說。

黑帽子是指那些造成破壞的黑客,而白帽子則是研究安全,但不造成破壞的黑客。白帽子均以建設更安全的互聯網為己任。

我于2008年開始在國内互聯網行業中倡導白帽子的理念,并聯合了一些主要互聯網公司的安全工程師,建立了白帽子社區,旨在交流工作中遇到的各種問題,以及經驗心得。

本書名為《白帽子講Web安全》,即是站在白帽子的視角,講述Web安全的方方面面。雖然也剖析攻擊原理,但更重要的是如何防範這些問題。同時也希望“白帽子”這一理念,能夠更加的廣為人知,為中國互聯網所接受。

本書結構

全書分為4大篇共18章,讀者可以通過浏覽目錄以進一步了解各篇章的内容。在有的章節末尾,還附上了筆者曾經寫過的一些博客文章,可以作為延伸閱讀以及本書正文的補充。

第一篇 我的安全世界觀是全書的綱領。在此篇中先回顧了安全的曆史,然後闡述了筆者對安全的看法與态度,并提出了一些思考問題的方式以及做事的方法。理解了本篇,就能明白全書中所涉及的解決方案在抉擇時的取舍。

第二篇 客戶端腳本安全就當前比較流行的客戶端腳本攻擊進行了深入闡述。當網站的安全做到一定程度後,黑客可能難以再找到類似注入攻擊、腳本執行等高風險的漏洞,從而可能将注意力轉移到客戶端腳本攻擊上。

客戶端腳本安全與浏覽器的特性息息相關,因此對浏覽器的深入理解将有助于做好客戶端腳本安全的解決方案。

如果讀者所要解決的問題比較嚴峻,比如網站的安全是從零開始,則建議跳過此篇,先閱讀下一篇“服務器端應用安全”,解決優先級更高的安全問題。

第三篇 服務器端應用安全就常見的服務器端應用安全問題進行了闡述。這些問題往往能引起非常嚴重的後果,在網站的安全建設之初需要優先解決這些問題,避免留下任何隐患。

第四篇 互聯網公司安全運營提出了一個大安全運營的思想。安全是一個持續的過程,最終仍然要由安全工程師來保證結果。

在本篇中,首先就互聯網業務安全問題進行了一些讨論,這些問題對于互聯網公司來說有時候會比漏洞更為重要。

在接下來的兩章中,首先闡述了安全開發流程的實施過程,以及筆者積累的一些經驗。然後談到了公司安全團隊的職責,以及如何建立一個健康完善的安全體系。

本書也可以當做一本安全參考書,讀者在遇到問題時,可以挑選任何所需要的章節進行閱讀。

緻謝

感謝我的妻子,她的支持是對我最大的鼓勵。本書最後的成書時日,是陪伴在她的病床邊完成的,我将銘記一生。

感謝我的父母,是他們養育了我,并一直在背後默默地支持我的事業,使我最終能有機會在這裡寫下這些話。

感謝我的公司阿裡巴巴集團,它營造了良好的技術與實踐氛圍,使我能夠有今天的積累。同時也感謝在工作中一直給予我幫助和鼓勵的同事、上司,他們包括但不限于:魏興國、湯城、劉志生、侯欣傑、林松英、聶萬全、謝雄欽、徐敏、劉坤、李澤洋、肖力、葉怡恺。

感謝季昕華先生為本書作序,他一直是所有安全工作者的楷模與學習的對象。

也感謝博文視點的張春雨先生以及他的團隊,是他們的努力使本書最終能與廣大讀者見面。他們的專業意見給了我很多的幫助。

最後特别感謝我的同事周拓,他對本書提出了很多有建設性的意見。

吳翰清

2012年1月于杭州

目錄

第一篇世界觀安全

第1章我的安全世界觀2

1.1Web安全簡史2

1.1.1中國黑客簡史2

1.1.2黑客技術的發展曆程3

1.1.3Web安全的興起5

1.2黑帽子,白帽子6

1.3返璞歸真,揭秘安全的本質7

1.4破除迷信,沒有銀彈9

1.5安全三要素10

1.6如何實施安全評估11

1.6.1資産等級劃分12

1.6.2威脅分析13

1.6.3風險分析14

1.6.4設計安全方案15

1.7白帽子兵法16

1.7.1SecureByDefault原則16

1.7.2縱深防禦原則18

1.7.3數據與代碼分離原則19

1.7.4不可預測性原則21

1.8小結22

(附)誰來為漏洞買單?23

第二篇客戶端腳本安全

第2章浏覽器安全26

2.1同源策略26

2.2浏覽器沙箱30

2.3惡意網址攔截33

2.4高速發展的浏覽器安全36

2.5小結39

第3章跨站腳本攻擊(XSS)40

3.1XSS簡介40

3.2XSS攻擊進階43

3.2.1初探XSSPayload43

3.2.2強大的XSSPayload46

3.2.3XSS攻擊平台62

3.2.4終極武器:XSSWorm64

3.2.5調試JavaScript73

3.2.6XSS構造技巧76

3.2.7變廢為寶:MissionImpossible82

3.2.8容易被忽視的角落:FlashXSS85

3.2.9真的高枕無憂嗎:JavaScript開發框架87

3.3XSS的防禦89

3.3.1四兩撥千斤:HttpOnly89

3.3.2輸入檢查93

3.3.3輸出檢查95

3.3.4正确地防禦XSS99

3.3.5處理富文本102

3.3.6防禦DOMBasedXSS103

3.3.7換個角度看XSS的風險107

3.4小結107

第4章跨站點請求僞造(CSRF)109

4.1CSRF簡介109

4.2CSRF進階111

4.2.1浏覽器的Cookie策略111

4.2.2P3P頭的副作用113

4.2.3GET?POST?116

4.2.4FlashCSRF118

4.2.5CSRFWorm119

4.3CSRF的防禦120

4.3.1驗證碼120

4.3.2RefererCheck120

4.3.3AntiCSRFToken121

4.4小結124

第5章點擊劫持(ClickJacking)125

5.1什麼是點擊劫持125

5.2Flash點擊劫持127

5.3圖片複蓋攻擊129

5.4拖拽劫持與數據竊取131

5.5ClickJacking3.0:觸屏劫持134

5.6防禦ClickJacking136

5.6.1framebusting136

5.6.2X—Frame—Options137

5.7小結138

第6章HTML5安全139

6.1HTML5新标簽139

6.1.1新标簽的XSS139

6.1.2iframe的sandbox140

6.1.3LinkTypes:noreferrer141

6.1.4Canvas的妙用141

6.2其他安全問題144

6.2.1Cross—OriginResourceSharing144

6.2.2postMessage——跨窗口傳遞消息146

6.2.3WebStorage147

6.3小結150

第三篇服務器端應用安全

第7章注入攻擊152

7.1SQL注入152

7.1.1盲注(BlindInjection)153

7.1.2TimingAttack155

7.2數據庫攻擊技巧157

7.2.1常見的攻擊技巧157

7.2.2命令執行158

7.2.3攻擊存儲過程164

7.2.4編碼問題165

7.2.5SQLColumnTruncation167

7.3正确地防禦SQL注入170

7.3.1使用預編譯語句171

7.3.2使用存儲過程172

7.3.3檢查數據類型172

7.3.4使用安全函數172

7.4其他注入攻擊173

7.4.1XML注入173

7.4.2代碼注入174

7.4.3CRLF注入176

7.5小結179

第8章文件上傳漏洞180

8.1文件上傳漏洞概述180

8.1.1從FCKEditor文件上傳漏洞談起181

8.1.2繞過文件上傳檢查功能182

8.2功能還是漏洞183

8.2.1Apache文件解析問題184

8.2.2IIS文件解析問題185

8.2.3PHPCGI路徑解析問題187

8.2.4利用上傳文件釣魚189

8.3設計安全的文件上傳功能190

8.4小結191

第9章認證與會話管理192

9.1WhoamI?192

9.2密碼的那些事兒193

9.3多因素認證195

9.4Session與認證196

9.5SessionFixation攻擊198

9.6Session保持攻擊199

9.7單點登錄(SSO)201

9.8小結203

第10章訪問控制205

10.1WhatCanIDo?205

10.2垂直權限管理208

10.3水平權限管理211

10.4OAuth簡介213

10.5小結219

第11章加密算法與随機數220

11.1概述220

11.2StreamCipherAttack222

11.2.1ReusedKeyAttack222

11.2.2Bit—flippingAttack228

11.2.3弱随機IV問題230

11.3WEP破解232

11.4ECB模式的缺陷236

11.5PaddingOracleAttack239

11.6密鑰管理251

11.7僞随機數問題253

11.7.1弱僞随機數的麻煩253

11.7.2時間真的随機嗎256

11.7.3破解僞随機數算法的種子257

11.7.4使用安全的随機數265

11.8小結265

(附)UnderstandingMD5LengthExtensionAttack267

第12章Web框架安全280

12.1MVC框架安全280

12.2模闆引擎與XSS防禦282

12.3Web框架與CSRF防禦285

12.4HTTPHeaders管理287

12.5數據持久層與SQL注入288

12.6還能想到什麼289

12.7Web框架自身安全289

12.7.1Struts2命令執行漏洞290

12.7.2Struts2的問題補丁291

12.7.3SpringMVC命令執行漏洞292

12.7.4Django命令執行漏洞293

12.8小結294

第13章應用層拒絕服務攻擊295

13.1DDOS簡介295

13.2應用層DDOS297

13.2.1CC攻擊297

13.2.2限制請求頻率298

13.2.3道高一尺,魔高一丈300

13.3驗證碼的那些事兒301

13.4防禦應用層DDOS304

13.5資源耗盡攻擊306

13.5.1Slowloris攻擊306

13.5.2HTTPPOSTDOS309

13.5.3ServerLimitDOS310

13.6一個正則引發的血案:ReDOS311

13.7小結315

第14章PHP安全317

14.1文件包含漏洞317

14.1.1本地文件包含319

14.1.2遠程文件包含323

14.1.3本地文件包含的利用技巧323

14.2變量複蓋漏洞331

14.2.1全局變量複蓋331

14.2.2extract()變量複蓋334

14.2.3遍曆初始化變量334

14.2.4import_request_variables變量複蓋335

14.2.5parse_str()變量複蓋335

14.3代碼執行漏洞336

14.3.1“危險函數”執行代碼336

14.3.2“文件寫入”執行代碼343

14.3.3其他執行代碼方式344

14.4定制安全的PHP環境348

14.5小結352

第15章WebServer配置安全353

15.1Apache安全353

15.2Nginx安全354

15.3jBoss遠程命令執行356

15.4Tomcat遠程命令執行360

15.5HTTPParameterPollution363

15.6小結364

第四篇互聯網公司安全運營

第16章互聯網業務安全366

16.1産品需要什麼樣的安全366

16.1.1互聯網産品對安全的需求367

16.1.2什麼是好的安全方案368

16.2業務邏輯安全370

16.2.1永遠改不掉的密碼370

16.2.2誰是大赢家371

16.2.3瞞天過海372

16.2.4關于密碼取回流程373

16.3賬戶是如何被盜的374

16.3.1賬戶被盜的途徑374

16.3.2分析賬戶被盜的原因376

16.4互聯網的垃圾377

16.4.1垃圾的危害377

16.4.2垃圾處理379

16.5關于網絡釣魚380

16.5.1釣魚網站簡介381

16.5.2郵件釣魚383

16.5.3釣魚網站的防控385

16.5.4網購流程釣魚388

16.6用戶隐私保護393

16.6.1互聯網的用戶隐私挑戰393

16.6.2如何保護用戶隐私394

16.6.3Do—Not—Track396

16.7小結397

(附)麻煩的終結者398

第17章安全開發流程(SDL)402

17.1SDL簡介402

17.2敏捷SDL406

17.3SDL實戰經驗407

17.4需求分析與設計階段409

17.5開發階段415

17.5.1提供安全的函數415

17.5.2代碼安全審計工具417

17.6測試階段418

17.7小結420

第18章安全運營422

18.1把安全運營起來422

18.2漏洞修補流程423

18.3安全監控424

18.4入侵檢測425

18.5緊急響應流程428

18.6小結430

(附)談談互聯網企業安全的發展方向431

名人推薦

對于絕大多數的中小網站來說,Web安全是技術上最薄弱而又很難提高的一個環節,而這個環節上發生的問題曾讓很多人寝食難安。感謝此書中分享的諸多寶貴經驗,讓我受益匪淺。同時,強烈建議每個技術團隊的負責人都能閱讀此書,定能讓你受益。

——丁香園CTO馮大輝

作為互聯網的開發人員,在實現功能外也需要重點關注如何避免留TXSS、CSRF等漏洞,否則很容易出現用戶賬号洩密、跨權限操作等嚴重問題,本書講解了通常網站是如何來應對這些漏洞以及保障安全的,從這些難能可貴的實戰經驗中可以學習到如何更好地編寫一個安全的網站。

——淘 寶資深技術專家林吳

安全問題成了互聯網的夢魇,這本書的出現終于能讓我們睡個好覺。

——知道創宇創始人CEO趙偉(icbm)

一直以來安全行業都不缺少所謂的技術和毫無思想的說明書式的文字,缺少的是對于安全本質的:析,關于如何更好地結合實際情況解決問題的思考,以及對這些思考的分享。吳翰清正在嘗試做個事情,而且做到了。

——烏雲漏洞平台創始人方小頓(劍心)

相關詞條

相關搜索

其它詞條