SQL注入是Internet上最危險、最有名的安全漏洞之一,本書是目前唯一一本專門致力于講解SQL威脅的圖書。本書作者均是專門研究SQL注入的安全專家,他們集眾家之長,對應用程序的基本編碼和升級維護進行全面跟蹤,詳細講解可能引發SQL注入的行為以及攻擊者的利用要素,並結合長期實踐經驗提出了相應的解決方案。針對SQL注入隱蔽性極強的特點,本書重點講解了SQL注入的排查方法和可以借助的工具,總結了常見的利用SQL漏洞的方法。另外,本書還專門從代碼層和系統層的角度介紹了避免SQL注入的各種策略和需要考慮的問題。
本書主要內容
SQL注入一直長期存在,但最近有所增強。本書包含所有與SQL注入攻擊相關的、當前已知的信息,凝聚了由本書作者組成的、無私奉獻的SQL注入專家團隊的所有深刻見解。
什麼是SQL注入?理解它是什麼以及它的基本原理
查找、確認和自動發現SQL注入
查找代碼中SQL注入時的提示和技巧
使用SQL注入創建利用
通過設計來避免由SQL攻擊所帶來的危險
目錄
第1章 什麼是SQL注入
1.1 概述
1.2 理解Web應用的工作原理
1.2.1 一種簡單的應用架構
1.2.2 一種較復雜的架構
1.3 理解SQL注入
1.4 理解SQL注入的產生過程
1.4.1 構造動態字符串
1.4.2 不安全的數據庫配置
1.5 本章小結
1.6 快速解決方案
1.7 常見問題解答
第2章 SQL注入測試
2.1 概述
2.2 尋找SQL注入
2.2.1 借助推理進行測試
2.2.2 數據庫錯誤
2.2.3 應用響應
2.2.4 SQL盲注
2.3 確認SQL注入
2.3.1 區分數字和字符串
2.3.2 內聯SQL注入
2.3.3 終止式SQL注入
2.3.4 時間延遲
2.4 自動尋找SQL注入
2.5 本章小結
2.6 快速解決方案
2.7 常見問題解答
第3章 復查代碼中的SQL注入
3.1 概述
3.2 復查源代碼中的SQL注入
3.2.1 危險的編碼行為
3.2.2 危險的函數
3.2.3 跟蹤數據
3.2.4 復查PL/SQL和T-SQL代碼
3.3 自動復查源代碼第1章 什麼是SQL注入
3.3.1 YASCA
3.3.2 Pixy
3.3.3 AppCodeScan
3.3.4 LAPSE
3.3.5 SWAAT
3.3.6 Microsoft SQL注入源代碼分析器
3.3.7 CAT.NET
3.3.8 商業源代碼復查工具
3.3.9 Ounce
3.3.10 Fortify源代碼分析器
3.3.11 CodeSecure
3.4 本章小結
3.5 快速解決方案
3.6 常見問題解答
第4章 利用SQL注入
4.1 概述
4.2 理解常見的利用技術
4.3 識別數據庫
4.3.1 非盲跟蹤
4.3.2 盲跟蹤
4.4 使用UINON語句提取數據
4.4.1 匹配列
4.4.2 匹配數據類型
4.5 使用條件語句
4.5.1 方法1︰基于時間
4.5.2 方法2︰基于錯誤
4.5.3 方法3︰基于內容
4.5.4 處理字符串
4.5.5 擴展攻擊
4.5.6 利用SQL注入錯誤
4.5.7 Oracle中的錯誤消息
4.6 枚舉數據庫模式
4.6.1 SQL Server
4.6.2 MySQL
4.6.3 Oracle
4.7 提升權限
4.7.1 SQL Server
4.7.2 Oracle
4.8 竊取哈希口令
4.8.1 SQL Server
4.8.2 MySQL
4.8.3 Oracle
4.9 帶外通信
4.9.1 E-mail
4.9.2 HTTP/DNS
4.9.3 文件系統
4.10 自動利用SQL注入
4.10.1 Sqlmap
4.10.2 Bobcat
4.10.3 BSQL
4.10.4 其他工具
4.11 本章小結
4.12 快速解決方案
4.13 常見問題解答
第5章 SQL盲注利用
5.1 概述
5.2 尋找並確認SQL盲注
5.2.1 強制產生通用錯誤
5.2.2 注入帶副作用的查詢
5.2.3 拆分與平衡
5.2.4 常見的SQL盲注場景
5.2.5 SQL盲注技術
5.3 使用基于時間的技術
5.3.1 延遲數據庫查詢
5.3.2 基于時間推斷的考慮
5.4 使用基于響應的技術
5.4.1 MySQL響應技術
5.4.2 SQL Server響應技術
5.4.3 Oracle響應技術
5.4.4 返回多位信息
5.5 使用非主流通道
5.5.1 數據庫連接
5.5.2 DNS滲漏
5.5.3 E-mail滲漏
5.5.4 HTTP滲漏
5.6 自動SQL盲注利用
5.6.1 Absinthe
5.6.2 BSQL Hacker
5.6.3 SQLBrute
5.6.4 Sqlninja
5.6.5 Squeeza
5.7 本章小結
5.8 快速解決方案
5.9 常見問題解答
第6章 利用操作系統
6.1 概述
6.2 訪問文件系統
6.2.1 讀文件
6.2.2 寫文件
6.3 執行操作系統命令
6.4 鞏固訪問
6.5 本章小結
6.6 快速解決方案
6.7 常見問題解答
6.8 尾注
第7章 高級話題
7.1 概述
7.2 避開輸入過濾器
7.2.1 使用大小寫變種
7.2.2 使用SQL注釋
7.2.3 使用URL編碼
7.2.4 使用動態的查詢執行
7.2.5 使用空字節
7.2.6 嵌套剝離後的表達式
7.2.7 利用截斷
7.2.8 避開自定義過濾器
7.2.9 使用非標準入口點
7.3 利用二階SQL注入
7.4 使用混合攻擊
7.4.1 修改捕獲的數據
7.4.2 創建跨站腳本
7.4.3 在Oracle上運行操作系統命令
7.4.4 利用驗證過的漏洞
7.5 本章小結
7.6 快速解決方案
7.7 常見問題解答
第8章 代碼層防御
8.1 概述
8.2 使用參數化語句
8.2.1 Java中的參數化語句
8.2.2 .NET(C#)中的參數化語句
8.2.3 PHP中的參數化語句
8.2.4 PL/SQL中的參數化語句
8.3 輸入驗證
8.3.1 白名單
8.3.2 黑名單
8.3.3 Java中的輸入驗證
8.3.4 .NET中的輸入驗證
8.3.5 PHP中的輸入驗證
8.4 編碼輸出
8.5 規範化
8.6 通過設計來避免SQL注入的危險
8.6.1 使用存儲過程
8.6.2 使用抽象層
8.6.3 處理敏感數據
8.6.4 避免明顯的對象名
8.6.5 創建數據庫Honeypot
8.6.6 附加的安全開發資源
8.7 本章小結
8.8 快速解決方案
8.9 常見問題解答
第9章 平台層防御
9.1 概述
9.2 使用運行時保護
9.2.1 Web應用防火牆
9.2.2 截斷過濾器
9.2.3 不可編輯的輸入保護與可編輯的輸入保護
9.2.4 URL策略/頁面層策略
9.2.5 面向方面編程
9.2.6 應用入侵檢測系統
9.2.7 數據庫防火牆
9.3 確保數據庫安全
9.3.1 鎖定應用數據
9.3.2 鎖定數據庫服務器
9.4 額外的部署考慮
9.4.1 最小化不必要信息的泄露
9.4.2 提高Web服務器日志的冗余
9.4.3 在獨立主機上部署Web服務器和數據庫服務器
9.4.4 配置網絡訪問控制
9.5 本章小結
9.6 快速解決方案
9.7 常見問題解答
第10章 參考資料
10.1 概述
10.2 SQL入門
10.3 SQL注入快速參考
10.3.1 識別數據庫平台
10.3.2 Microsoft SQL Server備忘單
10.3.3 MySQL備忘單
10.3.4 Oracle備忘單
1.1 概述
1.2 理解Web應用的工作原理
1.2.1 一種簡單的應用架構
1.2.2 一種較復雜的架構
1.3 理解SQL注入
1.4 理解SQL注入的產生過程
1.4.1 構造動態字符串
1.4.2 不安全的數據庫配置
1.5 本章小結
1.6 快速解決方案
1.7 常見問題解答
第2章 SQL注入測試
2.1 概述
2.2 尋找SQL注入
2.2.1 借助推理進行測試
2.2.2 數據庫錯誤
2.2.3 應用響應
2.2.4 SQL盲注
2.3 確認SQL注入
2.3.1 區分數字和字符串
2.3.2 內聯SQL注入
2.3.3 終止式SQL注入
2.3.4 時間延遲
2.4 自動尋找SQL注入
2.5 本章小結
2.6 快速解決方案
2.7 常見問題解答
第3章 復查代碼中的SQL注入
3.1 概述
3.2 復查源代碼中的SQL注入
3.2.1 危險的編碼行為
3.2.2 危險的函數
3.2.3 跟蹤數據
3.2.4 復查PL/SQL和T-SQL代碼
3.3 自動復查源代碼第1章 什麼是SQL注入
3.3.1 YASCA
3.3.2 Pixy
3.3.3 AppCodeScan
3.3.4 LAPSE
3.3.5 SWAAT
3.3.6 Microsoft SQL注入源代碼分析器
3.3.7 CAT.NET
3.3.8 商業源代碼復查工具
3.3.9 Ounce
3.3.10 Fortify源代碼分析器
3.3.11 CodeSecure
3.4 本章小結
3.5 快速解決方案
3.6 常見問題解答
第4章 利用SQL注入
4.1 概述
4.2 理解常見的利用技術
4.3 識別數據庫
4.3.1 非盲跟蹤
4.3.2 盲跟蹤
4.4 使用UINON語句提取數據
4.4.1 匹配列
4.4.2 匹配數據類型
4.5 使用條件語句
4.5.1 方法1︰基于時間
4.5.2 方法2︰基于錯誤
4.5.3 方法3︰基于內容
4.5.4 處理字符串
4.5.5 擴展攻擊
4.5.6 利用SQL注入錯誤
4.5.7 Oracle中的錯誤消息
4.6 枚舉數據庫模式
4.6.1 SQL Server
4.6.2 MySQL
4.6.3 Oracle
4.7 提升權限
4.7.1 SQL Server
4.7.2 Oracle
4.8 竊取哈希口令
4.8.1 SQL Server
4.8.2 MySQL
4.8.3 Oracle
4.9 帶外通信
4.9.1 E-mail
4.9.2 HTTP/DNS
4.9.3 文件系統
4.10 自動利用SQL注入
4.10.1 Sqlmap
4.10.2 Bobcat
4.10.3 BSQL
4.10.4 其他工具
4.11 本章小結
4.12 快速解決方案
4.13 常見問題解答
第5章 SQL盲注利用
5.1 概述
5.2 尋找並確認SQL盲注
5.2.1 強制產生通用錯誤
5.2.2 注入帶副作用的查詢
5.2.3 拆分與平衡
5.2.4 常見的SQL盲注場景
5.2.5 SQL盲注技術
5.3 使用基于時間的技術
5.3.1 延遲數據庫查詢
5.3.2 基于時間推斷的考慮
5.4 使用基于響應的技術
5.4.1 MySQL響應技術
5.4.2 SQL Server響應技術
5.4.3 Oracle響應技術
5.4.4 返回多位信息
5.5 使用非主流通道
5.5.1 數據庫連接
5.5.2 DNS滲漏
5.5.3 E-mail滲漏
5.5.4 HTTP滲漏
5.6 自動SQL盲注利用
5.6.1 Absinthe
5.6.2 BSQL Hacker
5.6.3 SQLBrute
5.6.4 Sqlninja
5.6.5 Squeeza
5.7 本章小結
5.8 快速解決方案
5.9 常見問題解答
第6章 利用操作系統
6.1 概述
6.2 訪問文件系統
6.2.1 讀文件
6.2.2 寫文件
6.3 執行操作系統命令
6.4 鞏固訪問
6.5 本章小結
6.6 快速解決方案
6.7 常見問題解答
6.8 尾注
第7章 高級話題
7.1 概述
7.2 避開輸入過濾器
7.2.1 使用大小寫變種
7.2.2 使用SQL注釋
7.2.3 使用URL編碼
7.2.4 使用動態的查詢執行
7.2.5 使用空字節
7.2.6 嵌套剝離後的表達式
7.2.7 利用截斷
7.2.8 避開自定義過濾器
7.2.9 使用非標準入口點
7.3 利用二階SQL注入
7.4 使用混合攻擊
7.4.1 修改捕獲的數據
7.4.2 創建跨站腳本
7.4.3 在Oracle上運行操作系統命令
7.4.4 利用驗證過的漏洞
7.5 本章小結
7.6 快速解決方案
7.7 常見問題解答
第8章 代碼層防御
8.1 概述
8.2 使用參數化語句
8.2.1 Java中的參數化語句
8.2.2 .NET(C#)中的參數化語句
8.2.3 PHP中的參數化語句
8.2.4 PL/SQL中的參數化語句
8.3 輸入驗證
8.3.1 白名單
8.3.2 黑名單
8.3.3 Java中的輸入驗證
8.3.4 .NET中的輸入驗證
8.3.5 PHP中的輸入驗證
8.4 編碼輸出
8.5 規範化
8.6 通過設計來避免SQL注入的危險
8.6.1 使用存儲過程
8.6.2 使用抽象層
8.6.3 處理敏感數據
8.6.4 避免明顯的對象名
8.6.5 創建數據庫Honeypot
8.6.6 附加的安全開發資源
8.7 本章小結
8.8 快速解決方案
8.9 常見問題解答
第9章 平台層防御
9.1 概述
9.2 使用運行時保護
9.2.1 Web應用防火牆
9.2.2 截斷過濾器
9.2.3 不可編輯的輸入保護與可編輯的輸入保護
9.2.4 URL策略/頁面層策略
9.2.5 面向方面編程
9.2.6 應用入侵檢測系統
9.2.7 數據庫防火牆
9.3 確保數據庫安全
9.3.1 鎖定應用數據
9.3.2 鎖定數據庫服務器
9.4 額外的部署考慮
9.4.1 最小化不必要信息的泄露
9.4.2 提高Web服務器日志的冗余
9.4.3 在獨立主機上部署Web服務器和數據庫服務器
9.4.4 配置網絡訪問控制
9.5 本章小結
9.6 快速解決方案
9.7 常見問題解答
第10章 參考資料
10.1 概述
10.2 SQL入門
10.3 SQL注入快速參考
10.3.1 識別數據庫平台
10.3.2 Microsoft SQL Server備忘單
10.3.3 MySQL備忘單
10.3.4 Oracle備忘單
序
十幾年前,基于數據庫的Web應用剛流行時,幾乎所有開發商都忽略了SQL注入漏洞,導致當時大多數網站的登錄入口形同虛設。時至今日,Web應用已愈加成熟,安全性也不斷得到加強。遺憾的是,針對SQL注入漏洞的各種攻擊工具也在推陳出新,不斷地向安全管理人員發出新的挑戰。如何最大程度地降低SQL注入風險,從根本上實施SQL注入防御,成為網絡管理人員和開發人員亟需解決的“燙手山芋”。
現在網絡上關于SQL注入方面的教程比較零散,大多針對某一類具體應用,難以作為預防SQL注入的完整解決方案。本書彌補了這一缺憾!本書作者均是專門研究SQL注入的安全專家,他們集眾家之長,對應用程序的基本編碼和升級維護進行全程跟蹤,詳細講解可能引發SQL注入的行為以及攻擊者的利用要素,並結合長期實踐經驗提出了相應的解決方案。SQL注入利用的是正常的HTTP服務端口,表面上和正常的Web訪問沒有差別,隱蔽性極強。針對這種情況,書中重點講解了SQL注入的排查方法和可以借助的工具,總結了常見的利用SQL注入漏洞的方法。開發人員和系統管理人員在SQL注入防御中扮演著重要角色,因此,書中專門從代碼層和系統層角度介紹了避免SQL注入的各種策略和需要考慮的問題。
全書共10章,分別介紹了SQL注入的基本概念,如何發現、確認並利用SQL注入和SQL盲注,利用操作系統防御SQL注入,SQL注入的一些高級話題,代碼層和平台層防御等知識,書中主要針對的是Microsoft SQL Server、MySQL和Oracle這三大主流數據庫。本書注重于實踐,涉及的內容也比較前沿,另外,還包含了大量翔實的案例,它們都具有很好的現實指導作用,讀者可從中學到最新的攻擊和防御技術。
本書主要由黃曉磊和李化翻譯完成,全書由李化統稿。由于本書內容較新、知識面廣且譯者水平有限,譯文中難免存在錯誤之處,敬請讀者批評指正。
現在網絡上關于SQL注入方面的教程比較零散,大多針對某一類具體應用,難以作為預防SQL注入的完整解決方案。本書彌補了這一缺憾!本書作者均是專門研究SQL注入的安全專家,他們集眾家之長,對應用程序的基本編碼和升級維護進行全程跟蹤,詳細講解可能引發SQL注入的行為以及攻擊者的利用要素,並結合長期實踐經驗提出了相應的解決方案。SQL注入利用的是正常的HTTP服務端口,表面上和正常的Web訪問沒有差別,隱蔽性極強。針對這種情況,書中重點講解了SQL注入的排查方法和可以借助的工具,總結了常見的利用SQL注入漏洞的方法。開發人員和系統管理人員在SQL注入防御中扮演著重要角色,因此,書中專門從代碼層和系統層角度介紹了避免SQL注入的各種策略和需要考慮的問題。
全書共10章,分別介紹了SQL注入的基本概念,如何發現、確認並利用SQL注入和SQL盲注,利用操作系統防御SQL注入,SQL注入的一些高級話題,代碼層和平台層防御等知識,書中主要針對的是Microsoft SQL Server、MySQL和Oracle這三大主流數據庫。本書注重于實踐,涉及的內容也比較前沿,另外,還包含了大量翔實的案例,它們都具有很好的現實指導作用,讀者可從中學到最新的攻擊和防御技術。
本書主要由黃曉磊和李化翻譯完成,全書由李化統稿。由于本書內容較新、知識面廣且譯者水平有限,譯文中難免存在錯誤之處,敬請讀者批評指正。
網路書店
類別
折扣
價格
-
新書87折$251