• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      SQL注入攻擊與防范研究

      2011-08-15 00:48:29天津市信息中心應(yīng)用處劉云志
      河南科技 2011年8期
      關(guān)鍵詞:程序員攻擊者漏洞

      天津市信息中心應(yīng)用處 劉云志

      SQL注入攻擊與防范研究

      天津市信息中心應(yīng)用處 劉云志

      SQL注入攻擊是指攻擊者利用提交專門設(shè)計的數(shù)據(jù)庫查詢代碼,欺騙服務(wù)器執(zhí)行惡意的SQL命令,從而獲取用戶密碼等保密信息,甚至獲取主機控制權(quán)限的行為。SQL注入攻擊利用的是SQL語法,由于其廣泛性、易學(xué)性和難以捕獲性已經(jīng)逐漸成為互聯(lián)網(wǎng)上的主流黑客攻擊方式。目前,互聯(lián)網(wǎng)上的多種Web應(yīng)用程序都面臨SQL注入的危險,多家網(wǎng)站都曾經(jīng)或正在被SQL注入攻擊,這種攻擊目前正在加速泛濫。統(tǒng)計表明,在互聯(lián)網(wǎng)上的Web服務(wù)器遭受的各類應(yīng)用層攻擊中,SQL注入占有極大的比例。

      由于多數(shù)程序員不了解SQL注入漏洞的知識,目前互聯(lián)網(wǎng)上網(wǎng)站經(jīng)常遭受SQL注入攻擊。本文,筆者針對PHP+MySQL型和ASP+SQLServer型Web程序的SQL注入攻擊防范措施進行了詳細闡述,并給出了預(yù)防SQL注入漏洞的方法,有助于提高Web應(yīng)用程序員的安全意識和Web程序的安全性。

      一、SQL注入原理

      1. SQL注入原理。SQL注入攻擊是指黑客在用戶交互端精心編寫一些SQL語句,把特殊的SQL指令語句插入到系統(tǒng)實際SQL語句中并執(zhí)行它,從而獲取主機控制權(quán)限的攻擊方法。SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區(qū)別,所以目前市面上的防火墻不會對SQL注入發(fā)出警報。以PHP語言為例,如果用戶的輸入能夠影響腳本中SQL命令的生成,那么很可能在添加了單引號、#號等轉(zhuǎn)義命令字符后,能夠改變最終生成的SQL命令。

      2. 舉例說明。如果程序員在編程時沒有對用戶輸入的變量$U和$P進行合理的限制,當(dāng)攻擊者把用戶名輸入為admin’#的時候,輸入字符串中的單引號和腳本中的單引號形成配對,而輸入字符串中的“#”號對于mysql語言來說是行注釋符,后邊的語句將被當(dāng)做注釋處理掉。這使攻擊者可以輕易繞過身份驗證機制,因此,沒有正確密碼也能看到管理員的信息。對于SQL注入攻擊,很多程序員對它仍然沒有足夠的重視,編寫的網(wǎng)站中遺留了大量SQL注入攻擊漏洞。加上許多專門的SQL注入軟件(如NBSI)的“蓬勃發(fā)展”,使得一個既不懂編程又不懂SQL的人,只要知道如何操作這個軟件就可以輕而易舉地入侵一家網(wǎng)站。

      二、SQL注入攻擊的特點

      1.廣泛性。SQL注入攻擊利用的是簡單的SQL語法,因此所有基于SQL語言標(biāo)準(zhǔn)的Web應(yīng)用程序都可能成為SQL注入攻擊的目標(biāo)。如果沒有對輸入的SQL語句做嚴(yán)格的技術(shù)處理,理論上都會存在SQL注入漏洞安全隱患。市場上主流的Web應(yīng)用程序均發(fā)現(xiàn)存在SQL注入漏洞的問題。

      2.危害大。通過SQL注入攻擊可以控制整個Web應(yīng)用系統(tǒng),在不經(jīng)授權(quán)的情況下對數(shù)據(jù)做任意地修改,甚至惡意篡改網(wǎng)頁的內(nèi)容,破壞性極大。

      3.技術(shù)要求低。目前互聯(lián)網(wǎng)上出現(xiàn)了許多SQL注入攻擊工具,如明小子、桂林老兵等都是非常出名的攻擊工具。攻擊者無需專業(yè)知識,直接利用此類工具軟件便可隨意地對存在SQL注入攻擊漏洞的網(wǎng)站實施攻擊。

      三、SQL注入攻擊檢測與防范

      目前針對Web服務(wù)器的SQL注入攻擊技術(shù)層出不窮,但其內(nèi)部機理都是利用畸形的SQL語句通過客戶端瀏覽器與服務(wù)器之間的共享連接來實現(xiàn)繞過認證獲取敏感信息。如何讓系統(tǒng)管理者采取有效的防范措施阻止內(nèi)部信息的泄露,將整個系統(tǒng)的威脅降至最低,是目前服務(wù)器防守的關(guān)鍵。

      1. SQL注入攻擊檢測方法。SQL注入攻擊檢測分為入侵前的檢測和入侵后的檢測,入侵前檢測可以手工測試也可以通過軟件檢測,入侵后檢測主要是針對日志的檢測。

      (1)數(shù)據(jù)庫檢查。使用HDSI、NBSI和Domain等SQL注入攻擊軟件工具進行SQL注入攻擊后,都會在數(shù)據(jù)庫中生成一些臨時表。通過查看數(shù)據(jù)庫中最近新建表的結(jié)構(gòu)和內(nèi)容,就可以判斷是否曾經(jīng)發(fā)生過SQL注入攻擊。

      (2)IIS日志檢查。在Web服務(wù)器中如果啟用了日志記錄,則IIS日志會記錄訪問者的IP地址、訪問文件等信息,SQL注入攻擊往往會大量訪問某一個頁面文件(存在SQL注入點的動態(tài)網(wǎng)頁),且日志文件也會急劇增加。

      2. 一般SQL注入攻擊的防范方法。

      (1)IIS服務(wù)器安全設(shè)置。攻擊者常用錯誤信息判斷SQL漏洞是否存在,可以修改IIS的返回信息,使得所有錯誤返回一樣的信息,攻擊者無從獲取網(wǎng)站信息??梢孕薷腃:WINDOWSHelp iisHelpcommon目錄下的500-100.asp文件為統(tǒng)一格式的500.htm。對于靜態(tài)網(wǎng)站,一般不設(shè)置腳本可執(zhí)行權(quán)限,動態(tài)網(wǎng)站也只設(shè)置純腳本權(quán)限。對于用戶上傳的文件設(shè)置為無可執(zhí)行權(quán)限,上傳文件夾不放置系統(tǒng)配置文件。IIS如無匿名登錄需求,則可取消該項服務(wù)。

      (2)功能代碼端設(shè)置。程序員要習(xí)慣將應(yīng)用系統(tǒng)中的密碼字段進行加密(如最常見的MD5加密),這不僅僅是為了隱藏用戶信息,尊重用戶隱私,更重要的是提高系統(tǒng)的安全性。也就是在程序中要對用戶輸入的信息進行檢驗,以達到SQL攻擊的防御效果。目前這種檢驗方法一般有2種:替換或刪除敏感字符串,在服務(wù)器正式處理前對提交數(shù)據(jù)進行檢驗。

      (3)SQL Server安全配置。用于程序連接數(shù)據(jù)庫的用戶不應(yīng)使用服務(wù)器角色組,而應(yīng)使用數(shù)據(jù)庫用戶角色組成員。SA級別的權(quán)限是不能隨便配置的,黑客SQL注入得手后調(diào)用xp_cmdshell命令就可以得到系統(tǒng)的最高權(quán)限。最好的方法是只給予db_Reader和db_ Writer權(quán)限,遇到有需要備份的用戶最好另行新建用戶。SQL Server可以精確地設(shè)置某一數(shù)據(jù)庫中各個表的select、update、delete等操作的權(quán)限,開發(fā)人員應(yīng)根據(jù)應(yīng)用系統(tǒng)的不同功能要求,合理地配置好這些權(quán)限。

      (4)對系統(tǒng)一級的設(shè)置。例如,使用防火墻關(guān)閉TCP1433和UDP1434端口對外的連接,給系統(tǒng)和SQL Sevrer甚至IIS打上最新的補丁,及時檢查系統(tǒng)是否出現(xiàn)弱口令用戶,一旦發(fā)現(xiàn)要及時修改密碼等。

      猜你喜歡
      程序員攻擊者漏洞
      為了讓媽媽看懂地圖,一位“野生程序員”做了個小程序
      消費電子(2022年7期)2022-10-31 06:17:10
      漏洞
      基于微分博弈的追逃問題最優(yōu)策略設(shè)計
      怎樣成為一名優(yōu)秀程序員
      幼兒100(2020年29期)2020-10-21 06:17:58
      正面迎接批判
      愛你(2018年16期)2018-06-21 03:28:44
      程序員之子
      意林(2017年24期)2018-01-02 22:49:14
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      加班
      三月三(2016年6期)2016-06-21 10:25:33
      高鐵急救應(yīng)補齊三漏洞
      镇安县| 汶上县| 温宿县| 泰来县| 阿拉善右旗| 东台市| 长葛市| 雷山县| 柯坪县| 塔城市| 民丰县| 温泉县| 大厂| 博湖县| 吴旗县| 洛南县| 渝北区| 金堂县| 全州县| 靖西县| 唐河县| 海淀区| 江阴市| 海城市| 潞城市| 石林| 那曲县| 咸宁市| 鄂托克前旗| 榆社县| 西贡区| 化州市| 霍林郭勒市| 北海市| 汾阳市| 贵定县| 克山县| 上高县| 长治县| 新泰市| 烟台市|