SQL注入攻擊與防御

出版時(shí)間:2010-6  出版社:清華大學(xué)出版社  作者:克拉克  頁數(shù):339  字?jǐn)?shù):589000  
Tag標(biāo)簽:無  

前言

  十幾年前,基于數(shù)據(jù)庫的Web應(yīng)用剛流行時(shí),幾乎所有開發(fā)商都忽略了SQL注入漏洞,導(dǎo)致當(dāng)時(shí)大多數(shù)網(wǎng)站的登錄入口形同虛設(shè)。時(shí)至今日,Web應(yīng)用已愈加成熟,安全性也不斷得到加強(qiáng)。遺憾的是,針對SQL注入漏洞的各種攻擊工具也在推陳出新,不斷地向安全管理人員發(fā)出新的挑戰(zhàn)。如何最大程度地降低SQL注入風(fēng)險(xiǎn),從根本上實(shí)施SQL注入防御,成為網(wǎng)絡(luò)管理人員和開發(fā)人員亟需解決的“燙手山芋”。  現(xiàn)在網(wǎng)絡(luò)上關(guān)于SQL注入方面的教程比較零散,大多針對某一類具體應(yīng)用,難以作為預(yù)防SQL注入的完整解決方案。本書彌補(bǔ)了這一缺憾!本書作者均是專門研究SQL注入的安全專家,他們集眾家之長,對應(yīng)用程序的基本編碼和升級維護(hù)進(jìn)行全程跟蹤,詳細(xì)講解可能引發(fā)SQL,注入的行為以及攻擊者的利用要素,并結(jié)合長期實(shí)踐經(jīng)驗(yàn)提出了相應(yīng)的解決方案。SOL注入利用的是正常的HTTP服務(wù)端口,表面上和正常的Web訪問沒有差別,隱蔽性極強(qiáng)。針對這種情況,書中重點(diǎn)講解了SQL注入的排查方法和可以借助的工具,總結(jié)了常見的利用SQL注入漏洞的方法。開發(fā)人員和系統(tǒng)管理人員在SQL注入防御中扮演著重要角色,因此,書中專門從代碼層和系統(tǒng)層角度介紹了避免SQL注入的各種策略和需要考慮的問題?! ∪珪瞝0章,分別介紹了SOL注入的基本概念,如何發(fā)現(xiàn)、確認(rèn)并利用SQL注入和SQL盲注,利用操作系統(tǒng)防御SQL注入,SQL注入的一些高級話題,代碼層和平臺層防御等知識,書中主要針對的是Microsoft SQL Server、My SQL和Oracle這三大主流數(shù)據(jù)庫。本書注重于實(shí)踐,涉及的內(nèi)容也比較前沿,另外,還包含了大量翔實(shí)的案例,它們都具有很好的現(xiàn)實(shí)指導(dǎo)作用,讀者可從中學(xué)到最新的攻擊和防御技術(shù)?! ”緯饕牲S曉磊和李化翻譯完成,全書由李化統(tǒng)稿。由于本書內(nèi)容較新、知識面廣且譯者水平有限,譯文中難免存在錯(cuò)誤之處,敬請讀者批評指正。

內(nèi)容概要

SQL注入是Internet上最危險(xiǎn)、最有名的安全漏洞之一,本書是目前唯一一本專門致力于講解SQL威脅的圖書。本書作者均是專門研究SQL注入的安全專家,他們集眾家之長,對應(yīng)用程序的基本編碼和升級維護(hù)進(jìn)行全面跟蹤,詳細(xì)講解可能引發(fā)SQL注入的行為以及攻擊者的利用要素,并結(jié)合長期實(shí)踐經(jīng)驗(yàn)提出了相應(yīng)的解決方案。針對SQL注入隱蔽性極強(qiáng)的特點(diǎn),本書重點(diǎn)講解了SQL注入的排查方法和可以借助的工具,總結(jié)了常見的利用SQL漏洞的方法。另外,本書還專門從代碼層和系統(tǒng)層的角度介紹了避免SQL注入的各種策略和需要考慮的問題?! ”緯饕獌?nèi)容  SQL注入一直長期存在,但最近有所增強(qiáng)。本書包含所有與SQL注入攻擊相關(guān)的、當(dāng)前已知的信息,凝聚了由本書作者組成的、無私奉獻(xiàn)的SQL注入專家團(tuán)隊(duì)的所有深刻見解?! ∈裁词荢QL注入?理解它是什么以及它的基本原理  查找、確認(rèn)和自動發(fā)現(xiàn)SQL注入  查找代碼中SQL注入時(shí)的提示和技巧  使用SQL注入創(chuàng)建利用  通過設(shè)計(jì)來避免由SQL攻擊所帶來的危險(xiǎn)

作者簡介

憑借這本《SQL注入攻擊與防御》,測試人員現(xiàn)在有了一把彌補(bǔ)Internet上各種分散式教程不足的利器。閱讀本書您可以學(xué)會識別并利用各種平臺上不同種類的SQL注入缺陷。 
          ——Devon Kearna,安全分析師  

書籍目錄

第1章 什么是SQL注入   1.1 概述   1.2 理解Web應(yīng)用的工作原理    1.2.1 一種簡單的應(yīng)用架構(gòu)    1.2.2 一種較復(fù)雜的架構(gòu)   1.3 理解SQL注入   1.4 理解SQL注入的產(chǎn)生過程    1.4.1 構(gòu)造動態(tài)字符串    1.4.2 不安全的數(shù)據(jù)庫配置   1.5 本章小結(jié)   1.6 快速解決方案   1.7 常見問題解答  第2章 SQL注入測試   2.1 概述   2.2 尋找SQL注入    2.2.1 借助推理進(jìn)行測試    2.2.2 數(shù)據(jù)庫錯(cuò)誤    2.2.3 應(yīng)用響應(yīng)    2.2.4 SQL盲注   2.3 確認(rèn)SQL注入    2.3.1 區(qū)分?jǐn)?shù)字和字符串    2.3.2 內(nèi)聯(lián)SQL注入    2.3.3 終止式SQL注入    2.3.4 時(shí)間延遲   2.4 自動尋找SQL注入   2.5 本章小結(jié)   2.6 快速解決方案   2.7 常見問題解答  第3章 復(fù)查代碼中的SQL注入   3.1 概述   3.2 復(fù)查源代碼中的SQL注入    3.2.1 危險(xiǎn)的編碼行為    3.2.2 危險(xiǎn)的函數(shù)    3.2.3 跟蹤數(shù)據(jù)    3.2.4 復(fù)查PL/SQL和T-SQL代碼   3.3 自動復(fù)查源代碼第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 商業(yè)源代碼復(fù)查工具    3.3.9 Ounce    3.3.10 Fortify源代碼分析器    3.3.11 CodeSecure   3.4 本章小結(jié)   3.5 快速解決方案   3.6 常見問題解答  第4章 利用SQL注入   4.1 概述   4.2 理解常見的利用技術(shù)   4.3 識別數(shù)據(jù)庫    4.3.1 非盲跟蹤    4.3.2 盲跟蹤   4.4 使用UINON語句提取數(shù)據(jù)    4.4.1 匹配列    4.4.2 匹配數(shù)據(jù)類型   4.5 使用條件語句    4.5.1 方法1:基于時(shí)間    4.5.2 方法2:基于錯(cuò)誤    4.5.3 方法3:基于內(nèi)容    4.5.4 處理字符串    4.5.5 擴(kuò)展攻擊    4.5.6 利用SQL注入錯(cuò)誤    4.5.7 Oracle中的錯(cuò)誤消息   4.6 枚舉數(shù)據(jù)庫模式    4.6.1 SQL Server    4.6.2 MySQL    4.6.3 Oracle   4.7 提升權(quán)限    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 文件系統(tǒng)   4.10 自動利用SQL注入    4.10.1 Sqlmap    4.10.2 Bobcat    4.10.3 BSQL    4.10.4 其他工具   4.11 本章小結(jié)   4.12 快速解決方案   4.13 常見問題解答  第5章 SQL盲注利用   5.1 概述   5.2 尋找并確認(rèn)SQL盲注    5.2.1 強(qiáng)制產(chǎn)生通用錯(cuò)誤    5.2.2 注入帶副作用的查詢    5.2.3 拆分與平衡    5.2.4 常見的SQL盲注場景    5.2.5 SQL盲注技術(shù)   5.3 使用基于時(shí)間的技術(shù)    5.3.1 延遲數(shù)據(jù)庫查詢    5.3.2 基于時(shí)間推斷的考慮   5.4 使用基于響應(yīng)的技術(shù)    5.4.1 MySQL響應(yīng)技術(shù)    5.4.2 SQL Server響應(yīng)技術(shù)    5.4.3 Oracle響應(yīng)技術(shù)    5.4.4 返回多位信息   5.5 使用非主流通道    5.5.1 數(shù)據(jù)庫連接    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 本章小結(jié)   5.8 快速解決方案   5.9 常見問題解答  第6章 利用操作系統(tǒng)   6.1 概述   6.2 訪問文件系統(tǒng)    6.2.1 讀文件    6.2.2 寫文件   6.3 執(zhí)行操作系統(tǒng)命令   6.4 鞏固訪問   6.5 本章小結(jié)   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 使用動態(tài)的查詢執(zhí)行    7.2.5 使用空字節(jié)    7.2.6 嵌套剝離后的表達(dá)式    7.2.7 利用截?cái)?   7.2.8 避開自定義過濾器    7.2.9 使用非標(biāo)準(zhǔn)入口點(diǎn)   7.3 利用二階SQL注入   7.4 使用混合攻擊    7.4.1 修改捕獲的數(shù)據(jù)    7.4.2 創(chuàng)建跨站腳本    7.4.3 在Oracle上運(yùn)行操作系統(tǒng)命令    7.4.4 利用驗(yàn)證過的漏洞   7.5 本章小結(jié)   7.6 快速解決方案   7.7 常見問題解答  第8章 代碼層防御   8.1 概述   8.2 使用參數(shù)化語句    8.2.1 Java中的參數(shù)化語句    8.2.2 .NET(C#)中的參數(shù)化語句    8.2.3 PHP中的參數(shù)化語句    8.2.4 PL/SQL中的參數(shù)化語句   8.3 輸入驗(yàn)證    8.3.1 白名單    8.3.2 黑名單    8.3.3 Java中的輸入驗(yàn)證    8.3.4 .NET中的輸入驗(yàn)證    8.3.5 PHP中的輸入驗(yàn)證   8.4 編碼輸出   8.5 規(guī)范化   8.6 通過設(shè)計(jì)來避免SQL注入的危險(xiǎn)    8.6.1 使用存儲過程    8.6.2 使用抽象層    8.6.3 處理敏感數(shù)據(jù)    8.6.4 避免明顯的對象名    8.6.5 創(chuàng)建數(shù)據(jù)庫Honeypot    8.6.6 附加的安全開發(fā)資源   8.7 本章小結(jié)   8.8 快速解決方案   8.9 常見問題解答  第9章 平臺層防御   9.1 概述   9.2 使用運(yùn)行時(shí)保護(hù)    9.2.1 Web應(yīng)用防火墻    9.2.2 截?cái)噙^濾器    9.2.3 不可編輯的輸入保護(hù)與可編輯的輸入保護(hù)    9.2.4 URL策略/頁面層策略    9.2.5 面向方面編程    9.2.6 應(yīng)用入侵檢測系統(tǒng)    9.2.7 數(shù)據(jù)庫防火墻   9.3 確保數(shù)據(jù)庫安全    9.3.1 鎖定應(yīng)用數(shù)據(jù)    9.3.2 鎖定數(shù)據(jù)庫服務(wù)器   9.4 額外的部署考慮    9.4.1 最小化不必要信息的泄露    9.4.2 提高Web服務(wù)器日志的冗余    9.4.3 在獨(dú)立主機(jī)上部署Web服務(wù)器和數(shù)據(jù)庫服務(wù)器    9.4.4 配置網(wǎng)絡(luò)訪問控制  9.5 本章小結(jié)  9.6 快速解決方案  9.7 常見問題解答  第10章 參考資料   10.1 概述   10.2 SQL入門   10.3 SQL注入快速參考    10.3.1 識別數(shù)據(jù)庫平臺    10.3.2 Microsoft SQL Server備忘單    10.3.3 MySQL備忘單    10.3.4 Oracle備忘單

章節(jié)摘錄

  8.9 常見問題解答  問題:為什么不能使用參數(shù)化語句來提供表名或列名?  解答:不能在參數(shù)化語句中提供SQL標(biāo)識符,是因?yàn)樵跀?shù)據(jù)庫中它們會被編譯并且之后會被提供的數(shù)據(jù)填充。這要求SQL標(biāo)識符在提供數(shù)據(jù)之前的編譯期間出現(xiàn)?! 栴}:為什么不能擁有參數(shù)化的ORDERBY子句?  解答:這個(gè)問題的答案與上一問題相同,因?yàn)镺RDERBY包含一個(gè)SQL標(biāo)識符,也就是要進(jìn)行排序的列?! 栴}:如何在x技術(shù)中對Y數(shù)據(jù)庫使用參數(shù)化語句?  解答:大多數(shù)現(xiàn)代編程語言和數(shù)據(jù)庫均支持參數(shù)化語句。請查看當(dāng)前使用的數(shù)據(jù)庫訪問API的文檔。請記住,有時(shí)也將這些語句稱為預(yù)處理語句?! 栴}:怎樣參數(shù)化一個(gè)存儲過程調(diào)用?  解答:在大多數(shù)編程語言中,這與使用參數(shù)化語句非常類似或者完全相同。請查詢當(dāng)前使用的數(shù)據(jù)庫訪問API的文檔。請記住,有時(shí)也將這些語句稱為可調(diào)用語句?! 栴}:從哪里獲取良好的用于驗(yàn)證x的黑名單?  解答:非常不幸,向黑名單中放入什么內(nèi)容取決于應(yīng)用的語境。如果可能的話,請盡量不要使用黑名單,因?yàn)槲覀儫o法列舉出所有的潛在攻擊或惡意輸入。如果必須使用黑名單,則請確保您要么使用輸出編碼,要么將黑名單輸入驗(yàn)證作為唯一的驗(yàn)證方法?! 栴}:使用白名單輸入驗(yàn)證是安全的嗎?  解答:不是。這取決于您允許通過的內(nèi)容。例如,可能允許輸入單引號,當(dāng)在動態(tài)SQL中包含這樣的輸入時(shí)就會產(chǎn)生問題?! 栴}:哪些場合比較適合使用白名單輸入驗(yàn)證?哪些場合適合使用黑名單輸入驗(yàn)證?  解答:應(yīng)該在應(yīng)用中接收輸入的地方使用白名單輸入驗(yàn)證,以便對敏感內(nèi)容應(yīng)用驗(yàn)證。在Web應(yīng)用防火墻或類似的位置適合將黑名單驗(yàn)證作為附加的控制,以此來檢測明顯的SQL注入攻擊企圖。  問題:需要對發(fā)送給數(shù)據(jù)庫和從數(shù)據(jù)庫獲取的輸入都進(jìn)行編碼嗎?為什么?  解答:不管在哪里使用動態(tài)SQL,都需要確保提交給數(shù)據(jù)庫的內(nèi)容不會引發(fā)SQL注入問題。這并不意味著惡意內(nèi)容已經(jīng)變得安全。當(dāng)從數(shù)據(jù)庫查詢這些內(nèi)容并在其他地方的動態(tài)SOL中使用時(shí),還是會存在危險(xiǎn)。  問題:應(yīng)該在哪些位置進(jìn)行編碼?  解答:應(yīng)該在使用信息的位置附近進(jìn)行編碼。如果在數(shù)據(jù)未到達(dá)數(shù)據(jù)庫之前向數(shù)據(jù)庫提交數(shù)據(jù),那么就應(yīng)該對數(shù)據(jù)進(jìn)行編碼。應(yīng)該在有可能使用數(shù)據(jù)的位置附近(例如,將數(shù)據(jù)展示給用戶之前針對跨站腳本編碼)或者在動態(tài)SQL中使用數(shù)據(jù)之前(針對SQL注入編碼)對來自數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行編碼。

編輯推薦

  唯一一本關(guān)于SQL注入攻擊與防御的專業(yè)書籍  理解,發(fā)現(xiàn)、利用和防御SQL注入的最佳指導(dǎo)  見解精辟,豐富、精彩的SQL注入示例及防御策略  作者多年長期實(shí)踐經(jīng)驗(yàn)的總結(jié)

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    SQL注入攻擊與防御 PDF格式下載


用戶評論 (總計(jì)18條)

 
 

  •   防SQL注入的一本工具書,主要是針對B/S項(xiàng)目方面,防止SQL注入攻擊,講解了SQL注入攻擊的原理以及如何防御,感覺挺不錯(cuò)的!
  •   SQL注入理論很詳細(xì),但實(shí)例相對少些。
  •   本來在當(dāng)當(dāng)訂的,后來發(fā)貨的時(shí)候說沒貨了,然后在其他網(wǎng)站買了。書看了下,寫的還是不錯(cuò)的,因?yàn)橐院笙霃氖掳踩珳y試領(lǐng)域的工作,這本書應(yīng)該會有所幫助
  •   唯數(shù)不多的具有實(shí)戰(zhàn)性質(zhì)的安全書籍,我很喜歡
  •   適合有一定開發(fā)經(jīng)驗(yàn)的人看,內(nèi)容不錯(cuò),很全面,但是需要認(rèn)真研讀,總體來說不錯(cuò)
  •   正在需要的
  •   老公的專業(yè),他看得很開心很喜歡.
  •   物流速度快,書的內(nèi)容好,喜歡!
  •   不適合零基礎(chǔ)
  •   店方發(fā)貨速度蠻快的 快遞方面不錯(cuò) 希望店方繼續(xù)努力
  •   這本sql注入的書雖沒傳說中那么好,但是也還不錯(cuò)。講解的蠻全面的。
  •   剛拿到,沒仔細(xì)看,但是應(yīng)該不錯(cuò),對sql注入講解的很全面
  •   此書甚好,適合搞web安全的人用。
  •   不錯(cuò)!剛開始讀!
  •   相當(dāng)不錯(cuò)。送貨給力,態(tài)度也好!!
  •   太羅嗦,這么一本書,居然好多核心東西沒講
  •   將的怎么感覺有點(diǎn)亂,
  •   只是書總的小錯(cuò)粗太多了,不是少一個(gè)字就是少一個(gè)符號。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7