日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具

發布時間:2025/4/14 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.關于SQL Injection
迄今為止,我基本沒有看到誰寫出一篇很完整的文章,或者說很成熟的解決方案(能做到 的人肯定很多,問題是沒有流傳開來,很遺憾) 我簡單的說幾點,希望啟發大家思考,起到拋磚引玉的作用

一、SQL Injection的原理
SQL Injection的實現方法和破壞作用有很多,但萬變不離其宗,其原理可以概括為一句話 :SQL Injection就是向服務器端提交事先準備好的數據,拼湊出攻擊者想要的SQL語句,以改變數據庫操作執行計劃。
我想,這么說也許不算精煉,但意思應該很明確了,這句話主要包含這么三層意思:
1.攻擊者通過何種途徑注入?
存在SQL Injection漏洞的地方都是應用程序需要根據客戶端環境構造SQL語句的地方。由此可以推論,只要存在"客戶端數據替換預定義變量"的地方,就有可能被注入。
客戶端提交數據可以有很多種方式:GET,POST,Client-Agent,Cookie,Server Enviroment...
2.攻擊者為什么可以將它想要的語句"注入"?
因為服務器端應用程序采用拼湊(請特別留意這個詞)SQL語句的方式,這使得攻擊者有機會在提交的數據中包含SQL關鍵字或者運算符,來構造他們想要的語句。
3.SQL Injection最終結果是什么?
改變數據庫操作執行計劃。
這個結果不一定是惡意的,只要你的SQL語句沒有按照你預期的計劃(plan)執行,那么就 可以視為被注入了,不管提交數據的人是不是惡意的。
設有這樣的sql語句:
update tableName set columnName1 = " $Client_Submit_Data " where PK_ID = 1234

$Client_Submit_Data是一個變量,它代表客戶端提交的數據,這里我就不管環境是ASP還 是PHP還是其他什么東西了。
假設這個操作是要更新一篇文章的標題,很多人是不是會這么構造SQL語句?我們看看$Cl ient_Submit_Data包含引號的情況,令$Client_Submit_Data = 誰能告訴我"sql injecti on"是什么?
那么sql語句將被拼湊成這樣:
update tableName set columnName1 = "誰能告訴我"sql injection"是什么?" where PK_ID = 1234
執行結果很明顯,將執行這樣的語句:update tableName set columnName1 = "誰能告訴我"
where子句被忽略掉了,很遺憾,你的數據庫中所有文章標題都會被update為"誰能告訴我 "

在這個例子當中,用戶應該是無心的——標題里面包括引號應該很正常吧——但結果卻和SQL Injection無異。

好啦,說了半天廢話,言歸正傳,說一下如何應對這種問題。

我相信這里的朋友都看過很多防止SQL Injection的文章了,也大都會通過replace來防范一些注入,問題是:你們知其然的時候是否知其所以然?

我認為,徹底解決SQL Injection的最好方法是:避免拼湊SQL語句。這就是我在上面要大家特別注意拼湊這個詞的原因。
SQL Injection之所以有機可乘,是因為絕大多數Server Application采用拼湊SQL語句的方式來構建應用程序(閱讀這個帖子的諸位,你們回首想想自己的項目,有幾個不是通過拼湊SQL語句的方式來操作數據庫?想想你們見過的被注入的案例,有幾個不是采用的拼湊SQL語句的應用),所謂拼湊SQL語句,簡單一點說就是:用連接字符串操作(ASP中的&和PHP中的.)將SQL關鍵字和客戶端提交的數據連接起來并發送給DBMS執行。這樣做直接導致 DBMS根本不知道你計劃(plan to)做什么,而只知道你要(is to)做什么,不是嗎,服務器端腳本總是將要執行的SQL語句構造好,然后發給數據庫,DBMS根本不知道客戶端數據 替換了變量之后,這個語句的執行計劃是否有變化。服務器端腳本總是粗暴的告訴DBMS:你只管這么做好了,別問我為什么。就像上面我提到的更新文章標題的例子,DBMS不知道你只想更新第1234篇文章的標題,它以為你就是要把所有的標題都變成這個,因為你的語句就是沒有where子句嘛!

說到這里,可能大家都明白了,所謂的最好方法是Stored Procedure。Yes! That is!

要想做出安全可靠的Server application,你最好把自己當作兩個人,一個DBA,一個Coder(ASP Coder,PHP Coder or others),很多人往往只知道:我在做一個BBS,我在做一個留言本,我在做一個新聞發布系統,我們的流程都是這樣的,給用戶一個表單,讓用戶提交,然后去寫數據庫,用的時候根據條件把數據記錄找出來,然后顯示。沒事,如果你 是一個業余愛好者,只想自己寫點小東西玩玩,這足夠了!如果你想把WebDev作為你的職業,或者說,你想成為一個非常專業的業余愛好者,你必須當自己是一個DBA+Coder,至于要不要是一個Designer就看你的能力和精力咯!

好了,點到為止,我就說這么多,徹底的解決方法是要在DBMS上寫入你的數據操作計劃,讓服務器在開始執行之前知道你的意圖,不要粗暴的告訴它:我就是要你執行這個命令,不要問我為什么!

實現方法嘛,目前比較普遍的,也比較容易實現的就是存儲過程了,應用存儲過程不僅可以從根本上解決SQL Injection這個安全問題,還會使得你的應用程序速度成倍增長(這個增長的幅度甚至可能達到一個數量級,這跟很多因素有關,不好一概而論),還會使得你開發的系統更想大型系統,擁有更好的架構體系(例如MVC模式)。

在 MySQL 4.1.x及其后續版本和ODBC中,提供了一種叫做prepared statements的東西,它 本質上也是一種存儲過程,一種系統預置(相對于用戶自定義)的存儲過程。

如果你沒有條件用上存儲過程(比如數據庫不支持,MySQL,Access,SQLite等都不支持),那么就只能將SQL Injection扼殺在搖籃里了。解決方法,我也只簡單的說一句:不要相信任何來自客戶端的數據。這個客戶端的數據,可以通過很多途徑被提交,比如get,post ,cookie,browser參數,IP地址,等等,只要不是服務器上獲取的就都算客戶端數據,只要是客戶端數據,都是不可信的,在TCP/IP這個大框架下,什么都是可以偽造的,包括IP地址。

凡是來自客戶端的數據,必須校驗——注意是校驗,不是過濾。基本上,不管你多聰明多細心(哪怕像我一樣,不許笑,不許笑,嚴肅點,嚴肅點,我們這兒講SQL Injection呢) 也無法窮舉可能被用于SQL Injection的符號和關鍵字,也無法預知替換掉他們是否會有副 作用,最好的辦法是不去判斷什么數據不符合條件,而改由判斷什么數據符合條件,假設你的一個系統用戶名只能是字母數字和下劃線,那么你就可以用[0-9a-zA-Z_]+這個正則來匹配它,如果不符合條件,拒之即可,這比費盡心思去過濾單引號分號逗號空格什么的要明了和簡潔的多。

當然如果你嫌存儲過程麻煩,你也可以使用參數化SQL語句,至少在asp.net可以這么做,請見本人的一篇文章:《在ADO.NET中使用參數化SQL語句的大同小異》,網址是:http://blog.csdn.net/zhoufoxcn/archive/2008/03/19/2195618.aspx,介紹在asp.net中使用參數化SQL語句應注意的事項。

春節前夕,數萬個用PHPBB作為論壇的網站被攻陷,大家有印象嗎?罪魁禍首只是一個單引 ,盡管PHP有magic_quotes_gpc,可還是被干掉了,原因是%2527在url_decode函數中會被解析為%27(因為%25就是百分號),%27正是引號,By the way,盡管博客中國的論壇也 是基于PHPBB的,但是那次我們幸免于難,因為在那之前我們被黑過一次了(汗),就是因為這個,哈哈! 其實,SQL Injection不是ASP編程領域特有的,Web開發最容易碰到,但Desktop Application也有,只要有數據庫的地方,只要采用拼湊SQL語句的方式,就可能存在Injection的機會,大家牢記,如果有條件,盡量把數據DBMS職責范圍的事情交給DBMS去做,如果沒條件,一定要注意校驗客戶端提交的數據,當然,雙管齊下也行,^_^

好了,最后,說句話給那些有志于從事WebDev工作的朋友,如果將來你進入這個領域,你把總結出來這篇文章,你應該會很順利的通過面試,并得到一個不錯的薪水等級。

?

附:微軟發布3款SQL Injection攻擊檢測工具

隨著 SQL INJECTION 攻擊的明顯增多,微軟近日發布了三個免費工具,幫助網站管理員和檢測存在的風險并對可能的攻擊進行攔截。

Scrawlr
下載地址:https://download.spidynamics.com/Products/scrawlr/

這個微軟和 HP合作開發的工具,會在網站中爬行,對所有網頁的查詢字符串進行分析并發現其中的 SQL INJECTION 風險。Scrawlr 使用了部分 HP WebInspect? 相同的技術,但只檢測 SQL INJECTION 風險。Scrawlr 從一個起始 URL 入口,爬遍整個網站,并對站點中所有網頁進行分析以找到可能存在的漏洞。

Microsoft Source Code Analyzer for SQL Injection
下載地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA&displaylang=en

這款被稱作 MSCASI 的工具可以檢測 ASP 代碼并發現其中的 SQL INJECTION 漏洞(ASP 代碼以 SQL INJECTION 漏洞著稱),你需要向 MSCASI 提供原始代碼,MSCASI 會幫你找到存在風險的代碼位置。

URLScan 3.0
下載地址: http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1697

該工具會讓 IIS 限制某些類型的 HTTP 請求,通過對特定 HTTP 請求進行限制,可以防止某些有害的請求在服務器端執行。UrlScan 通過一系列關鍵詞發現惡意請求,并阻止惡意請求的執行。

轉載于:https://www.cnblogs.com/zhoufoxcn/archive/2008/08/06/2515701.html

總結

以上是生活随笔為你收集整理的SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产做爰全过程免费视频 | 久久爱综合网 | 久久av资源 | 久久成人在线 | 欧美久久天堂 | 在线观看涩涩 | 国产亚洲综合av | 综合网天天 | 亚洲乱人伦 | 欧美午夜精品一区二区 | 黑人干亚洲女人 | 用我的手指扰乱你 | 男女又爽又黄 | 久久国产精品久久久久久 | 亚洲一区二区免费 | 久久网免费视频 | 综合久久久 | 国产精品成人69xxx免费视频 | 精品色 | 日韩在线小视频 | 国产精品剧情 | 最新国产露脸在线观看 | 桃色视频在线 | sao虎视频在线精品永久 | 亚洲激情视频在线 | 国产99久久久国产精品成人免费 | 俄罗斯av在线 | 亚洲视频一区二区 | 另类ts人妖一区二区三区 | 欧美福利片在线观看 | 拔萝卜91| 蜜臀av性久久久久蜜臀aⅴ四虎 | 超碰2023| av网址在线| 国产精品网站免费 | 成人午夜在线视频 | 中日韩av在线 | 青青草.com| 西西人体高清44rt·net | 久久va | 尤物视频在线观看国产性感 | 久久成人av| sm国产在线调教视频 | 成都4电影免费高清 | 中文字幕高清视频 | 精品人妻码一区二区三区红楼视频 | 成人永久免费视频 | 精品一区二区三区毛片 | 成人一区二区av | 天天插天天 | 欧美色图第一页 | 中国无码人妻丰满熟妇啪啪软件 | 国产精品自拍片 | 国产乡下妇女做爰毛片 | 久久久久久视 | 99精品视频一区二区 | 香蕉视频免费网站 | 亚洲天堂不卡 | 亚洲国产精品一区二区久久hs | 开心激情久久 | 欧美婷婷六月丁香综合色 | 人人天天夜夜 | 日本日韩欧美 | h片大全| 国产毛片在线 | 中文字幕av第一页 | heyzo朝桐光一区二区 | 操操插插 | 97人妻精品一区二区三区免 | 羞羞的视频在线观看 | 中文字幕视频在线观看 | 97超碰色 | 宅宅少妇无码 | 久久亚洲精品视频 | 精品国产一区二区三区性色av | 欧美激情h | 亚洲乱码国产乱码精品精软件 | 一级少妇精品久久久久久久 | 久久久久99精品国产片 | 麻豆www. | 欧美肉大捧一进一出免费视频 | 亚洲欧美成人 | 精品一区在线观看视频 | 亚洲影视在线观看 | 欧美亚洲视频 | 日本黄色录象 | 免费在线观看av | 国产又粗又黄 | 13日本xxxxxⅹxxx20 | 中文字幕一级片 | wwwxxx在线观看 | 免费在线观看的黄色网址 | 日本午夜小视频 | 一级久久久久久久 | 免费日本黄色片 | 亚洲av无码一区二区三区网址 | 中文在线资源 | 福利在线免费观看 | 国产精品三级在线 |