SQL注入攻擊與防御

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

前言

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

內(nèi)容概要

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

作者簡(jiǎn)介

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

書(shū)籍目錄

第1章 什么是SQL注入   1.1 概述   1.2 理解Web應(yīng)用的工作原理    1.2.1 一種簡(jiǎn)單的應(yīng)用架構(gòu)    1.2.2 一種較復(fù)雜的架構(gòu)   1.3 理解SQL注入   1.4 理解SQL注入的產(chǎn)生過(guò)程    1.4.1 構(gòu)造動(dòng)態(tài)字符串    1.4.2 不安全的數(shù)據(jù)庫(kù)配置   1.5 本章小結(jié)   1.6 快速解決方案   1.7 常見(jiàn)問(wèn)題解答  第2章 SQL注入測(cè)試   2.1 概述   2.2 尋找SQL注入    2.2.1 借助推理進(jìn)行測(cè)試    2.2.2 數(shù)據(jù)庫(kù)錯(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 自動(dòng)尋找SQL注入   2.5 本章小結(jié)   2.6 快速解決方案   2.7 常見(jiàn)問(wèn)題解答  第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 自動(dòng)復(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 常見(jiàn)問(wèn)題解答  第4章 利用SQL注入   4.1 概述   4.2 理解常見(jiàn)的利用技術(shù)   4.3 識(shí)別數(shù)據(jù)庫(kù)    4.3.1 非盲跟蹤    4.3.2 盲跟蹤   4.4 使用UINON語(yǔ)句提取數(shù)據(jù)    4.4.1 匹配列    4.4.2 匹配數(shù)據(jù)類型   4.5 使用條件語(yǔ)句    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ù)庫(kù)模式    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 自動(dòng)利用SQL注入    4.10.1 Sqlmap    4.10.2 Bobcat    4.10.3 BSQL    4.10.4 其他工具   4.11 本章小結(jié)   4.12 快速解決方案   4.13 常見(jiàn)問(wèn)題解答  第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 常見(jiàn)的SQL盲注場(chǎng)景    5.2.5 SQL盲注技術(shù)   5.3 使用基于時(shí)間的技術(shù)    5.3.1 延遲數(shù)據(jù)庫(kù)查詢    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ù)庫(kù)連接    5.5.2 DNS滲漏    5.5.3 E-mail滲漏    5.5.4 HTTP滲漏   5.6 自動(dòng)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 常見(jiàn)問(wèn)題解答  第6章 利用操作系統(tǒng)   6.1 概述   6.2 訪問(wèn)文件系統(tǒng)    6.2.1 讀文件    6.2.2 寫(xiě)文件   6.3 執(zhí)行操作系統(tǒng)命令   6.4 鞏固訪問(wèn)   6.5 本章小結(jié)   6.6 快速解決方案   6.7 常見(jiàn)問(wèn)題解答   6.8 尾注  第7章 高級(jí)話題   7.1 概述   7.2 避開(kāi)輸入過(guò)濾器    7.2.1 使用大小寫(xiě)變種    7.2.2 使用SQL注釋    7.2.3 使用URL編碼    7.2.4 使用動(dòng)態(tài)的查詢執(zhí)行    7.2.5 使用空字節(jié)    7.2.6 嵌套剝離后的表達(dá)式    7.2.7 利用截?cái)?   7.2.8 避開(kāi)自定義過(guò)濾器    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)證過(guò)的漏洞   7.5 本章小結(jié)   7.6 快速解決方案   7.7 常見(jiàn)問(wèn)題解答  第8章 代碼層防御   8.1 概述   8.2 使用參數(shù)化語(yǔ)句    8.2.1 Java中的參數(shù)化語(yǔ)句    8.2.2 .NET(C#)中的參數(shù)化語(yǔ)句    8.2.3 PHP中的參數(shù)化語(yǔ)句    8.2.4 PL/SQL中的參數(shù)化語(yǔ)句   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 通過(guò)設(shè)計(jì)來(lái)避免SQL注入的危險(xiǎn)    8.6.1 使用存儲(chǔ)過(guò)程    8.6.2 使用抽象層    8.6.3 處理敏感數(shù)據(jù)    8.6.4 避免明顯的對(duì)象名    8.6.5 創(chuàng)建數(shù)據(jù)庫(kù)Honeypot    8.6.6 附加的安全開(kāi)發(fā)資源   8.7 本章小結(jié)   8.8 快速解決方案   8.9 常見(jiàn)問(wèn)題解答  第9章 平臺(tái)層防御   9.1 概述   9.2 使用運(yùn)行時(shí)保護(hù)    9.2.1 Web應(yīng)用防火墻    9.2.2 截?cái)噙^(guò)濾器    9.2.3 不可編輯的輸入保護(hù)與可編輯的輸入保護(hù)    9.2.4 URL策略/頁(yè)面層策略    9.2.5 面向方面編程    9.2.6 應(yīng)用入侵檢測(cè)系統(tǒng)    9.2.7 數(shù)據(jù)庫(kù)防火墻   9.3 確保數(shù)據(jù)庫(kù)安全    9.3.1 鎖定應(yīng)用數(shù)據(jù)    9.3.2 鎖定數(shù)據(jù)庫(kù)服務(wù)器   9.4 額外的部署考慮    9.4.1 最小化不必要信息的泄露    9.4.2 提高Web服務(wù)器日志的冗余    9.4.3 在獨(dú)立主機(jī)上部署Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器    9.4.4 配置網(wǎng)絡(luò)訪問(wèn)控制  9.5 本章小結(jié)  9.6 快速解決方案  9.7 常見(jiàn)問(wèn)題解答  第10章 參考資料   10.1 概述   10.2 SQL入門   10.3 SQL注入快速參考    10.3.1 識(shí)別數(shù)據(jù)庫(kù)平臺(tái)    10.3.2 Microsoft SQL Server備忘單    10.3.3 MySQL備忘單    10.3.4 Oracle備忘單

章節(jié)摘錄

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

編輯推薦

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

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


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


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

 
 

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

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

京ICP備13047387號(hào)-7