版權資訊
書 名: 黑客入侵網頁攻防修煉
作 者:德瑞工作室
出版社:電子工業出版社
定價:¥38.00
內容簡介
本書將PHP的技術技巧與Web套用相結合,分別對黑客的入侵和頁面設計時的防範措施進行了深入淺出的分析,通過實例演示了包括CommandInjection、ScriptInsertion、XSS、SQLInjection、CSRF、SessionHijacking和HTTPResponseSplitting等在內的18種技術,這其中包含了作者對網頁安全的獨到見解。
圖書目錄
第1章PHP網頁的安全性1
1.1什麼是安全性2
1.1.1黑客攻擊的方式2
1.1.2PHP網頁的安全性問題3
1.2RegisterGlobals4
1.3安全模式7
1.3.1限制檔案的存取8
1.3.2限制環境變數的存取8
1.3.3限制外部程式的執行9
1.4MagicQuotes9
1.4.1使用MagicQuotes的好處10
1.4.2使用MagicQuotes的壞處10
1.4.3取消MagicQuotes功能11
1.5修改PHP的設定值11
1.5.1在php.ini檔案中修改設定值12
1.5.2在httpd.conf檔案中修改設定值13
1.5.3在.htaccess檔案中修改設定值13
1.5.4在程式中修改設定值13
第2章CommandInjection–命令注入攻擊15
2.1PHP的命令執行函式16
2.1.1System函式16
2.1.2Exec函式17
2.1.3passthru函式18
2.1.4shell_exec函式18
2.1.5運算符19
2.2命令注入攻擊19
2.2.1攻擊實例一19
2.2.2攻擊實例二20
2.2.3攻擊實例三21
2.2.4命令注入的方式21
2.3eval注入攻擊22
2.3.1攻擊沒有作用23
2.3.2可變變數24
2.3.3pre_replace函式24
2.3.4ace函式26
2.3.5動態函式27
2.3.6call_user_func函式29
2.4防範的方法30
2.4.1使用escapeshellarg函式來處理命令的參數30
2.4.2使用safe_mode_exec_dir指定的執行檔的路徑32
第3章ScriptInsertion–客戶端腳本植入攻擊33
3.1客戶端腳本植入攻擊34
3.2攻擊實例:在留言板中插入腳本35
3.2.1開始攻擊:顯示簡單的對話框37
3.2.2沒有顯示對話框38
3.2.3打開InternetExplorer的活動腳本功能39
3.2.4關閉PHP的magic_quotes_gpc40
3.2.5利用資料庫來攻擊41
3.2.6本章的資料庫42
3.2.7瀏覽植入腳本的留言44
3.2.8破壞性的攻擊手法:顯示無窮盡的新視窗45
3.2.9引誘性的攻擊手法:跳轉網址46
3.3防範的方法48
3.3.1HTML輸出過濾48
3.3.2使用strip_tags函式來進行HTML輸出過濾48
3.3.3strip_tags函式的缺點50
3.3.4使用htmlspecialchars函式來進行HTML輸出過濾52
第4章XSS–跨網站腳本攻擊53
4.1什麼是“跨網站腳本攻擊”56
4.2跨網站腳本攻擊58
4.2.1本章的資料庫60
4.2.2登錄首頁61
4.2.3如何攻擊62
4.2.4開始攻擊62
4.2.5沒有顯示對話框64
4.2.6如何取得目標用戶的cookie內容64
4.2.7伺服器的記錄檔案67
4.3防範的方法67
4.4隱藏在$_SERVER["PHP_SELF"]變數內的腳本70
4.4.1實際範例71
4.4.2拆解 標籤的內容73
4.4.3避免$_SERVER["PHP_SELF"]被篡改74
第5章SQLInjection–SQL注入攻擊77
5.1SQL注入攻擊78
5.2攻擊實例:繞過賬號、密碼的檢查79
5.2.1如何攻擊81
5.2.2開始攻擊82
5.2.3隻填入賬號84
5.3攻擊實例:刪除資料庫的所有記錄84
5.3.1刪除留言的記錄86
5.3.2如何攻擊87
5.3.3開始攻擊88
5.4攻擊實例:盜取密碼89
5.4.1如何攻擊91
5.4.2開始攻擊91
5.5防範的方法93
5.5.1數字型變數的過濾方式93
5.5.2字元串變數的過濾方式:使用addslashes函式94
第6章CSRF–跨網站請求偽造攻擊97
6.1跨網站請求偽造攻擊98
6.2攻擊實例:刪除資料庫的一條記錄99
6.2.1刪除留言的記錄101
6.2.2如何攻擊102
6.2.3開始攻擊103
6.3攻擊實例:新增資料庫的一條記錄104
6.3.1如何攻擊105
6.3.2開始攻擊106
6.4防範的方法107
6.4.1檢查網頁的來源108
6.4.2檢查內置的隱藏變數111
6.4.3使用POST,不要使用GET113
第7章SessionHijacking–會話劫持攻擊115
7.1什麼是Session116
7.1.1sessionid116
7.1.2Session的名稱118
7.2PHP的Session機制119
7.2.1URL參數119
7.2.2表單中隱藏屬性的文本框120
7.2.3Cookie121
7.3會話劫持攻擊123
7.3.1攻擊的步驟124
7.3.2如何攻擊124
7.3.3開始攻擊127
7.4Session固定攻擊129
7.4.1攻擊的步驟130
7.4.2攻擊的方式131
7.5防範的方法132
7.5.1定期更改sessionid132
7.5.2更改Session的名稱133
7.5.3關閉透明化sessionid的功能133
7.5.4隻從cookie檢查sessionid134
7.5.5檢查瀏覽器是否改變134
7.5.6使用URL傳遞秘密參數135
第8章HTTPResponseSplitting–HTTP回響拆分攻擊137
8.1HTTP簡介138
8.1.1HTTP請求的格式138
8.1.2HTTP請求的方法139
8.1.3HTTP回響的格式139
8.1.4使用header函式傳送HTTP表頭143
8.1.5使用PHP的函式來替代Telnet143
8.2HTTP回響拆分攻擊144
8.3攻擊實例:跳轉地址149
8.4與Session固定結合攻擊150
8.5防範的方法150
8.5.1將session.use_only_cookies設定為1152
8.5.2使用最新版的PHP152
8.6隱藏HTTP回響表頭152
第9章FileUploadAttack–檔案上傳攻擊155
9.1檔案上傳156
9.1.1上傳檔案的大小157
9.1.2$_FILES數組變數158
9.1.3存放上傳檔案的資料夾159
9.1.4上傳檔案時的錯誤信息159
9.2檔案上傳攻擊159
9.2.1上傳執行檔160
9.2.2覆蓋原有檔案162
9.2.3癱瘓網站162
9.2.4存取上傳的檔案數據162
9.3防範的方法162
9.3.1關掉上傳檔案的功能163
9.3.2限制允許上傳的檔案大小163
9.3.3檢查是否真的是上傳的檔案164
9.3.4更改臨時資料夾的路徑166
9.3.5讀取上傳檔案的絕對路徑與檔案名稱稱167
9.3.6隱藏檔案的路徑168
第10章目錄/檔案攻擊169
10.1目錄穿越攻擊170
10.1.1如何攻擊170
10.1.2開始攻擊171
10.1.3Microsoft的IIS伺服器173
10.2遠程檔案引入攻擊173
10.2.1如何攻擊174
10.2.2開始攻擊174
10.2.3與目錄穿越結合攻擊175
10.2.4與HTTP回響分割結合攻擊177
10.3防範的方法179
10.3.1使用者輸入的檔案名稱179
10.3.2設定open_basedir181
10.3.3設定allow_url_fopen為Off182
10.3.4使用realpath與basename函式來處理檔案名稱182
第11章其他的攻擊183
11.1變數指定攻擊184
11.2URL攻擊187
11.2.1開始攻擊187
11.2.2防範的方法188
11.3表單欺騙攻擊189
11.4HTTP請求欺騙攻擊191
11.5拒絕服務攻擊193
11.5.1SYNFlood攻擊194
11.5.2LAND攻擊195
11.5.3PingofDeath攻擊195
11.5.4PingFlood攻擊195
11.5.5Teardrop攻擊195
11.5.6Pear-to-pear攻擊196
11.5.7分散式拒絕服務攻擊196
11.5.8防範的方法196
11.5.9SYNCookies197
11.5.10防火牆197
11.5.11分享器與路由器197
11.5.12應用程式前端硬體197
11.6網頁劫持攻擊198
11.7緩衝區溢位攻擊198
11.7.1基本範例199
11.7.2堆疊溢出199
第12章攻擊手法匯總201
12.1命令注入攻擊202
12.1.1程式代碼漏洞1202
12.1.2攻擊手法1202
12.1.3程式代碼漏洞2203
12.1.4攻擊手法2203
12.1.5命令注入的方式203
12.1.6防範的方法204
12.2eval注入攻擊204
12.2.1程式代碼漏洞1204
12.2.2攻擊手法205
12.2.3程式代碼漏洞2205
12.2.4攻擊手法205
12.2.5程式代碼漏洞3206
12.2.6攻擊手法206
12.2.7程式代碼漏洞4206
12.2.8攻擊手法206
12.2.9防範的方法207
12.3客戶端腳本注入攻擊207
12.3.1程式代碼漏洞1207
12.3.2攻擊手法207
12.3.3程式代碼漏洞2207
12.3.4攻擊手法208
12.3.5防範的方法208
12.4跨網站腳本攻擊208
12.4.1程式代碼漏洞1209
12.4.2攻擊手法209
12.4.3程式代碼漏洞2209
12.4.4攻擊手法209
12.4.5防範的方法209
12.5SQL注入攻擊210
12.5.1程式代碼漏洞1210
12.5.2攻擊手法211
12.5.3程式代碼漏洞2211
12.5.4攻擊手法211
12.5.5程式代碼漏洞3211
12.5.6攻擊手法212
12.5.7防範的方法212
12.6跨網站請求偽造攻擊213
12.6.1程式代碼漏洞1213
12.6.2攻擊手法214
12.6.3程式代碼漏洞2214
12.6.4攻擊手法214
12.6.5防範的方法215
12.7Session劫持攻擊216
12.7.1程式代碼漏洞216
12.7.2攻擊手法217
12.7.3防範的方法217
12.8Session固定攻擊218
12.8.1程式代碼漏洞218
12.8.2攻擊手法218
12.8.3防範的方法219
12.9HTTP回響拆分攻擊221
12.9.1程式代碼漏洞1221
12.9.2攻擊手法221
12.9.3程式代碼漏洞2222
12.9.4攻擊手法222
12.9.5防範的方法222
12.10檔案上傳攻擊223
12.10.1程式代碼漏洞223
12.10.2攻擊手法224
12.10.3防範的方法224
12.11目錄穿越攻擊225
12.11.1程式代碼漏洞225
12.11.2攻擊手法226
12.11.3防範的方法226
12.12遠程檔案引入攻擊226
12.12.1程式代碼漏洞227
12.12.2攻擊手法1227
12.12.3攻擊手法2227
12.12.4防範的方法227
12.13變數指定攻擊228
12.13.1程式代碼漏洞228
12.13.2攻擊手法228
12.13.3防範的方法229
第13章漏洞掃描器231
13.1什麼是“漏洞掃描器”232
13.2Nessus漏洞掃描器232
13.2.1Nessus的特點233
13.2.2下載與安裝233
13.2.3執行Nessus234
13.2.4Nessus檢查漏洞的方式237
13.3MaxPatrol漏洞掃描器238
13.4Paros漏洞掃描器240
13.4.1Paros的特點240
13.4.2下載與安裝241
13.4.3設定瀏覽器的Proxy241
13.4.4執行Paros243
13.4.5掃描漏洞244
13.4.6檢視HTTP請求與回響的內容245
13.4.7Paros的Trap功能245
13.4.8URL編碼與解碼246
第14章開發安全的Web程式247
14.1什麼是“安全的Web應用程式”248
14.2過濾輸入的數據248
14.2.1為什麼要過濾數據249
14.2.2基本的數據過濾程式251
14.2.3數字數據的過濾252
14.2.4字元串數據的過濾253
14.2.5HTML與PHP標籤的過濾254
14.2.6檔案路徑的過濾255
14.2.7序列化字元串的過濾256
14.3轉義輸出的數據257
14.3.1基本的轉義程式257
14.3.2轉義SQL表達式的字元串258
14.3.3使用addslashes函式258
14.4RegisterGlobals259
14.4.1隱藏RegisterGlobals所發生的問題260
14.4.2$_REQUEST變數261
14.4.3$_SERVER變數261
14.5magic_quotes_gpc261
14.6錯誤信息的報告262
14.7檔案的安全263
14.8Session的安全264
14.8.1Session固定攻擊264
14.8.2Session的保存265
14.9虛擬主機266
14.9.1可預測的臨時檔案名稱稱266
14.9.2隱藏表頭的信息267
14.9.3系統異常的監測267
附錄
附錄ATelnet使用說明269
A.1Telnet簡介270
A.2打開Windows的Telnet服務270
A.3Telnet使用說明272
A.4使用Telnet連線到本地主機273
A.5在HTTP表頭內加上要執行的檔案275
附錄B查看HTTP請求與回響的實際內容277
B.1如何查看HTTP請求與回響的實際內容280
B.2修改HTTP請求/回響的內容281
B.3顯示HTTP請求/回響的參數282
B.4顯示上傳檔案的HTTP請求283
附錄CURL編碼與解碼285
附錄D構建PHP的測試環境285
D.1AppServ整合包288
D.2安裝AppServ整合包289
D.3測試AppServ是否正確安裝293
D.4伺服器的資料夾位置293
附錄E找出網站的IP位址285
E.1使用Ping命令296
E.2使用NetInfo296
E.3無法找出IP位址297
……