《PHP Web安全開發實戰》是2018年清華大學出版社出版的圖書,作者是湯青松。本書是根據作者在工作實踐中積累下來的經驗而寫成的,書中的內容結構為漏洞案例加實踐過程的描述。
基本介紹
- 中文名:PHP Web安全開發實戰
- 作者:湯青松
- 出版社:清華大學出版社
- 出版時間:2018年10月01日
- 頁數:210 頁
- 定價:59 元
- 開本:787×1092 1/16
- 裝幀:精裝
- ISBN:9787302511274
內容簡介,序言,前言,作者簡介,目錄,
內容簡介
全書共有6章內容,可分為四大部分:第一部分即第1章,主要介紹WEB安全環境問題與攻擊者是如何挖掘的漏洞;第二部分既第2章,主要介紹WEB安全的常見漏洞,包括SQL注入、XSS、檔案上傳、CSRF等;第三部分既第3章,主要介紹介紹設計WEB業務時候比較常見的問題,包括驗證碼設計、支付設計、許可權設計等。第四部分包含4~6章,主要介紹WEB伺服器安全配置與安全編碼相關的知識,包括LANMP的安全配置、數據加密、與安全漏洞檢測等。
序言
隨著網際網路的快速發展,以及大量中小型網際網路公司的出現,網路用戶數也在不斷增長,用戶安全意識不斷提升,人們越來越注重個人隱私及數據安全的防護,出現用戶密碼泄露、隱私外泄、財產損失等都是不能忍受的。大多數中小型公司都在用PHP開發WEB端,但這些公司往往缺乏安全相關的技術團隊,來為網路安全方面提供技術保障。尤其在開發過程中工程師忽略安全方面的考慮,導致線上網站伺服器出現各種安全漏洞,留下安全隱患,對用戶和公司都會造成不同程度的損失。
加上近些年各大網際網路公司陸續爆出被攻擊的安全問題,大量賬戶和密碼泄露。例如有些用戶在很多網站都使用同一賬戶和密碼,使得黑客更容易破解他在其它網站的賬戶信息。類似問題讓企業在安全性方面面臨嚴峻挑戰,可以說一個網站沒有安全,就像沒有穿衣服一樣,它是裸露透明的,一絲不掛毫無隱私和保障可言。
縱觀市場,很少有類似結合實際案例著作的WEB安全方面的書籍,本書正是基於此,總結作者在安全方面的經驗,循序漸進的講述大量實際發生的案例以及處理方案,來應對各種新奇攻擊技術。從常見網路攻擊、代碼安全、前端腳本安全、後端套用安全、賬戶安全、加解密及認證、SQL注入以及伺服器配置防護等各方面提供了比較成熟的技術解決方案。通過閱讀本書能夠幫助讀者對整個網路安全有一個全新的認識和質的提升,從而成為一位懂安全、會防護的工程師,避免在工作當中成為黑客的攻擊對象。總之,這是開發工程師在安全方面不可多得的一本網路安全書籍,值得一讀。
愛卡汽車高級工程師 張鋒
安全是一個系統工程,涉及到項目管理,架構設計,代碼編寫等方面。一個合格開發人員除了要有安全意識,還要掌握一些安全編程知識點。這本書為開發人員介紹了一些Web安全基礎知識,分別以原理、實踐兩個方面進行了闡述,Web安全入門簡單,重要的是實踐和積累。
看雪學院 段鋼
前言
出版背景
2017年5月清華大學出版社的編輯王金柱先生找到我,希望我能從PHP開發者的角度寫一本書出來。 當時還沒有想過要出一本PHP安全開發方面的書籍,反覆思考一周之後決定答應下來。當時寫這本書主要有兩個目的,一是總結自己的這些年來的一些安全開發經驗,二是希望能幫到需要提升安全知識的PHP從業者。
在規劃這本書的時候特意從PHP開發者的角度來做的,目的是讓開發者提升安全開發的能力,書中會講到WEB安全中的常見漏洞,以及相關的漏洞案例,最佳的安全防範方法,以及我自己的觀點。
面向讀者
這本書面向懂PHP開發,但不擅長安全方面的開發者,可以通過此書讓你在WEB安全當中快速成長,在書中列出了很多網際網路的漏洞案例,目的是讓讀者看了之後印象能夠更加了解攻擊者是如何發現漏洞的,從而讓開發者在開發時能夠對症下藥。
2018年4月於北京
作者簡介
湯青松, 2017 PHP全球開發者大會安全話題演講嘉賓,前烏雲眾測研發工程師,慕課網Web安全方向高級講師;現就職於中國婚博會,負責技術實現與數據安全方面的工作。
目錄
《PHP Web安全開發實戰》
第1章 信息泄露 1
1.1 主機信息 1
1.1.1 子域名信息 2
1.1.2 連線埠信息 5
1.1.3 域名註冊信息 10
1.1.4 網站後台地址 12
1.2 源碼泄露 14
1.2.1 Git源碼泄露 15
1.2.2 SVN源碼泄露 17
1.2.3 .DS_Store檔案泄露 18
1.2.4 網站備份壓縮檔案 20
1.2.5 WEB-INF/web.xml泄露 21
1.2.6 防禦方案 24
1.3 賬戶弱口令 24
1.3.1 漏洞成因 24
1.3.2 漏洞危害 251.3.3 漏洞案例 26
1.3.4 防範方法 29
第2章 常規漏洞 31
2.1 SQL注入 31
2.1.1 注入方式 32
2.1.2 漏洞的3種類型 39
2.1.3 檢測方法 41
2.1.4 防範方法 43
2.1.5 代碼審查 45
2.1.6 小結 47
2.2 XSS跨站 47
2.2.1 XSS漏洞類型 48
2.2.2 漏洞危害 51
2.2.3 防範方法 54
2.2.4 操作實踐 56
2.2.5 代碼審查 58
2.2.6 小結 59
2.3 代碼注入與命令執行 59
2.3.1 漏洞類型 60
2.3.2 漏洞案例 62
2.3.3 防禦方法 65
2.3.4 命令執行 65
2.3.5 小結 67
2.4 CSRF跨站請求偽造 67
2.4.1 原理分析 67
2.4.2 漏洞案例 68
2.4.3 操作實踐 72
2.4.4 防禦方法 73
2.4.5 防禦代碼示例 74
2.4.6 小結 75
2.5 檔案包含 76
2.5.1 漏洞成因 76
2.5.2 本地檔案包含 76
2.5.3 遠程檔案包含 79
2.5.4 測試方法 82
2.5.5 使用PHP封裝協定 83
2.5.6 小結 84
2.6 檔案上傳漏洞 85
2.6.1 利用方式 85
2.6.2 上傳檢測 86
2.6.3 解析漏洞 87
2.6.6 小結 92
第3章 業務邏輯安全 93
3.1 驗證碼安全 93
3.1.1 圖片驗證碼 94
3.1.2 數字暴力破解 98
3.1.3 空驗證碼突破 99
3.1.4 繞過測試 101
3.1.5 憑證返回 102
3.1.6 小結 103
3.2 密碼找回 103
3.2.1 敏感信息泄露 104
3.2.2 信箱弱token 105
3.2.3 驗證的有效性 106
3.2.4 註冊覆蓋 107
3.2.5 小結 109
3.3 接口盜用 109
3.3.1 API盜用 109
3.3.2 簡訊轟炸 111
3.4 賬戶越權 116
3.4.1 未授權訪問 116
3.4.2 水平越權 118
3.4.3 垂直越權 120
3.4.4 小結 121
3.5 支付漏洞 121
3.5.1 支付流程分析 122
3.5.2 金額數據篡改 123
3.5.3 商品數量篡改 125
3.5.4 運費金額修改 127
3.5.5 小結 128
3.6 SSRF服務端請求偽造 129
3.6.1 漏洞成因 129
3.6.2 漏洞案例 131
3.6.3 總結 134
第4章 LANMP安全配置 135
4.1 PHP安全配置 135
4.2 PHP安全擴展 139
4.2.1 taint簡介 139
4.2.2 安裝taint 140
4.2.3 測試驗證 141
4.2.4 小結 144
4.3 Apache安全配置 144
4.3.1 禁止版本信息 144
4.3.2 目錄許可權隔離 145
4.3.3 關閉默認主機 145
4.3.4 低許可權運行 145
4.3.5 防止用戶自定義設定 145
4.3.6 禁止顯示目錄 146
4.4 Nginx安全配置 148
4.4.1 配置防禦 148
4.4.2 防止許可權擴大 149
4.4.3 WAF擴展 150
4.4.4 Nginx解析漏洞 152
4.5 Redis配置 154
4.5.1 漏洞成因 154
4.5.2 漏洞案例 156
4.5.3 小結 157
4.6 MySQL安全配置 157
4.6.1 許可權安全 157
4.6.2 網路配置 162
4.6.3 MySQL日誌 163
4.6.4 主機配置 164
4.6.5 啟動選項 165
第5章 認證與加密 167
5.1 數據加密與簽名 167
5.1.1 對稱加密與非對稱加密 167
5.1.2 數字簽名 169
5.1.3 數字證書 170
5.2 HTTPS安全 171
5.2.1 HTTPS簡介 171
5.2.2 HTTPS被攻擊的方式 173
5.2.3 常見誤區 174
5.3 密碼加密策略 175
5.3.1 密碼存儲 176
5.3.2 密碼傳輸 178
5.3.3 漏洞案例 178
5.3.4 總結 180
第6章 其他Web安全主題 181
6.1 DDoS攻擊 181
6.1.1 DDoS分類 182
6.1.2 應對方案 183
6.1.3 漏洞案例 184
6.1.4 小結 186
6.2 CMS通用漏洞 186
6.2.1 漏洞簡介 186
6.2.2 等級劃分 187
6.2.3 漏洞案例 188
6.2.4 防禦方法 191
6.3 網頁掛馬 192
6.3.1 掛馬類型 193
6.3.2 掛馬檢測 194
6.3.3 小結 196
6.4 Burp Suite 196
6.4.1 攔截數據包 197
6.4.2 修改數據包 198
6.4.3 頁面連結抓取 199
6.4.4 自動化挖掘 201
6.4.5 暴力破解 201
6.5 SQLMap 203
6.5.1 查看資料庫賬戶 205
6.5.2 查看資料庫中的所有賬戶 206
6.5.3 獲取所有資料庫名稱 207
6.5.4 獲取資料庫表名稱 208
6.5.5 查看錶結構 209
6.5.6 導出數據 210