999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

網站數據庫SQL注入及防范

2010-04-11 08:06:52陳學平
制造業自動化 2010年10期
關鍵詞:頁面程序設置

陳學平

CHEN Xue-ping

(重慶電子工程職業學院 技師學院,重慶 401331)

網站數據庫SQL注入及防范

Web database and preventing SQL injection

陳學平

CHEN Xue-ping

(重慶電子工程職業學院 技師學院,重慶 401331)

SQL注入是一種入侵WEB服務器的方法.當網站應用程序對接收到的數據沒進行嚴格過濾時,它便有可能存在SQL注入漏洞.文中將介紹入侵者利用SQL注入方法入侵WEB服務器的思路,并且給出相應的防御方法。通過在實際項目中的使用,能夠很好的進行主動防范,具有較高的實用價值。

數據庫安全;SQL注入;SQL防范

1 網站數據庫的安全

對于采用“虛擬主機”的方式建立的中小型網站,其后臺數據庫絕大多數采用Access數據庫。如果有人通過各種方法獲得或者猜到數據庫的存儲路徑和文件名,則該數據庫可以被下載到本地。

為了防止被非法下載和訪問,可采取以下措施:

1)改變數據庫名稱。為數據庫文件起個復雜的非常規的名字,并放在幾層目錄下。所謂“非常規”,就是說如果有個數據庫要保存的是有關電子商店的信息,不把它命名為“eshop.mdb”,而是起個比較怪的名稱,如d34ksfslf.mdb,再放在如/kdslf/i44/studi/ 的幾層目錄下,這樣黑客要想通過猜的方式得到Access數據庫文件就比較困難了。

2)不把數據庫名寫在程序中。許多人都把DSN寫在程序中,比如DBPath= Server.MapPath("cmddb.mdb")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath 假如萬一給人拿到了源程序,Access數據庫的名字就一覽無余。因此建議在ODBC里設置數據源,再在程序中這樣寫:conn.open "shujiyuan"。

3)改變數據庫文件的擴展名。如把abc134.mdb改為abc134.asp,這樣在ASP文件及數據庫操作中仍然可以正常使用。但在非法訪問者看來,該文件已不是數據庫文件了。

4)加密Access數據庫文件。選取"工具→安全→加密/解密數據庫,選取數據庫(如employer.mdb),然后按“確定”按鈕,會出現"數據庫加密后另存為"的窗口,存為employer1.mdb。接著,employer.mdb會被編碼,然后存為employer1.mdb。要注意的是,以上的方法并不是對數據庫設置密碼,而只是對數據庫文件內容加密,目的是為了防止他人使用別的工具來查看數據庫文件的內容。接下來為數據庫設置密碼,首先打開經過編碼的employer1.mdb,在打開時,選擇"獨占"方式。然后選取功能表的"工具→安全→設置數據庫密碼",輸入密碼即可。為employer1.mdb設置密碼之后,如果再使用Access數據庫文件時,則Access會先要求輸入密碼,驗證正確后才能夠啟動數據庫,可以在ASP程序中的connection對象的open方法中增加PWD的參數來訪問有密碼保護的數據庫文件,

例如:

param="driver={Microsoft AccessDriver(*.md b)};Pwd=yfdsfs"param=param&";

dbq="&server.mappath("employer1.mdb")conn.open param

這樣即使別人得到了employer1.mdb文件,沒有密碼是無法看到employer1.mdb的內容。

綜合使用上述方法,數據庫被非法下載的可能性就會降低。

2 SQL注入攻擊的原理

許多動態網站在編寫程序時,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶通過向數據庫提交一段精心構造的SQL查詢代碼,(一般是在瀏覽器地址欄進行,通過正常的www端口訪問)根據程序返回的結果,收集網站與數據庫的信息,進而非法獲得網站數據庫中的敏感信息或向其中添加自定義數據,這就是SQL Injection,即SQL注入攻擊。SQL注入攻擊使用簡單,危害大。被攻擊成功的網站往往被攻擊者掌握最高權限,可任意增刪數據。

為了說明SQL注入攻擊的原理,可在本地網站上http://localhost/進行測試。

http://localhost/show.asp?ID=123是一個正常的網頁地址,將這個網址提交到服務器后,服務器將進行類似Select * from 表名 where 字段="&ID的查詢(ID即客戶端提交的參數,本例是即123),再將查詢結果返回給客戶端,如果在這個地址后面加上單引號’,服務器會返回下面的錯誤提示:

Microsoft JET Database Engine 錯誤 '80040e14'

字符串的語法錯誤 在查詢表達式 'ID=123'' 中。

/show.asp,行8

從這個錯誤提示我們能看出下面幾點:

1)網站使用的是Access數據庫,通過JET引擎連接數據庫,而不是通過ODBC。

2)程序沒有判斷客戶端提交的數據是否符合程序要求。

3)該SQL語句所查詢的表中有一名為ID的字段。

除了上述介紹的在頁面地址欄中加單引號“’”的方法判斷可否注入外,還可以在頁面地址后面分別加入“and 1=1 ”和“and 1=2”來測試網站能否注入,這就是經典的1=1、1=2測試法,通過其返回結果判斷能否注入:

1)http://localhost/show.asp?id=123

2)http://localhost/show.asp?id=123 and 1=1

3)http://localhost/show.asp?id=123 and 1=2

可以注入的表現:

1)正常顯示(這是必然的,不然就是程序有錯誤了)

2)正常顯示,內容基本與①相同

3)提示BOF或EOF(程序沒做任何判斷時)、或提示找不到記錄(判斷了rs.eof時)、或顯示內容為空(程序加了on error resume next)

不可以注入就比較容易判斷了,1)同樣正常顯示,2)和3)一般都會有程序定義的錯誤提示,或提示類型轉換時出錯。

不同的數據庫的函數、注入方法都是有差異的,通常在注入之前,攻擊者還要判斷一下數據庫的類型。一般ASP最常搭配的數據庫是Access和SQLServer。

SQLServer有一些系統變量,如果服務器IIS提示沒關閉,并且SQLServer返回錯誤提示的話,那可以直接從出錯信息獲取,方法如下:

http://localhost/show.asp?id=123 and user>0

這句語句的前面的部分是正常的,重點在and user>0,我們知道,user是SQLServer的一個內置變量,它的值是當前連接的用戶名,類型為nvarchar。拿一個nvarchar的值跟int的數0比較,系統會先試圖將nvarchar的值轉成int型,當然,轉的過程中肯定會出錯,SQLServer的出錯提示類似于:將nvarchar值 ”abc” 轉換數據類型為 int的列時發生語法錯誤,其中,abc正是變量user的值,這樣,很容易就得到了數據庫的用戶名。

如果服務器IIS不允許返回錯誤提示,那怎么判斷數據庫類型呢?攻擊者可以從Access和SQLServer和區別入手,Access和SQLServer都有自己的系統表,比如存放數據庫中所有對象的表,Access是在系統表[msysobjects]中,但在Web環境下讀該表會提示“沒有權限”,SQLServer是在表[sysobjects]中,在Web環境下可正常讀取。

在確認可以注入的情況下,使用下面的語句:

http://localhost/show.asp?id=123? and (select count(*) from sysobjects)>0

http://localhost/show.asp?id=123? and (select count(*) from msysobjects)>0

如果數據庫是SQLServer,那么第一個網址的頁面與原頁面http://localhost/show.asp?id=123是大致相同的;而第二個網址,由于找不到表msysobjects,會提示出錯,就算程序有容錯處理,頁面也與原頁面完全不同。

如果數據庫用的是Access,那么情況就有所不同,第一個網址的頁面與原頁面完全不同;第二個網址,則視乎數據庫設置是否允許讀該系統表,一般來說是不允許的,所以與原網址也是完全不同。大多數情況下,用第一個網址就可以得知系統所用的數據庫類型,第二個網址只作為開啟IIS錯誤提示時的驗證。

3 防范SQL注入攻擊

對于存在著SQL注入攻擊漏洞的網站,攻擊者可以通過專用工具或手工構造特殊代碼不斷猜測嘗試,獲得數據庫名、表名、表中的字段名稱,甚至是具有系統管理權限的用戶帳號和密碼、上傳病毒、木馬或惡意文件,給網站帶來巨大危害。下面講述如何防止SQL注入。

1)設置ASP錯誤提示

SQL注入入侵是根據IIS給出的ASP錯誤提示信息來入侵的,如果把IIS設置成不管出什么樣的ASP錯誤,只給出一種錯誤提示信息,即http 500錯誤,那么攻擊者就沒辦法直接得到網站的數據庫信息,也就很難確定下一步的攻擊目標了。具體設置參見圖1。主要把500:100這個錯誤的默認提示頁面 C:WINDOWSHelpiisHelpcommon500-100.asp改成自定義的C:WINDOWSHelpiisHelpcommon500.htm即可,這時,無論ASP運行中出什么錯,服務器都只提示HTTP 500錯誤。

圖1 IIS出錯信息設置

但是這樣設置一個不好的地方是程序員編寫的代碼出錯時,服務器不給出詳細的錯誤提示信息,會給程序調試帶來很大的不便。不過,服務器畢竟不是測試代碼的地方,應堅持安全穩定第一,這樣設置也是無可厚非的,事實上許多服務器的出錯信息都是如此設置。

2)過濾敏感字符

在程序中對客戶端提交的數據進行檢查,如果輸入中存在著特殊字符(如’、<、>、=等),或者輸入的字符中含有SQL語言中的命令動詞(如insert、select、update等),就認為是SQL注入式攻擊,系統立即停止執行并給出警告信息或者轉向出錯頁面。

下面是防止注入式攻擊的asp代碼,使用時加入到相應的asp文件中即可。該代碼并沒有實際記錄攻擊者的相關信息,只是嚇唬而已,如有必有,完全可以把攻擊者的數據記錄到特定的文件中,以備查看。

常見的是利用MD5進行加密處理,用MD5加密的數據不能被反向解密,即使看見了加密后的密文也不能得到原始數據。使用時,把用VBScript實現MD5算法的文件md5.asp包含在文件中,然后用md5(user_password)的形式調用,即可得到加密后的密文。如:

由于篇幅所限,上述md5.asp文件省略。

4 結束語

我們上面介紹了網站數據庫的SQL注入防范方法,我們平常在網站制作完成后,可用NBSI、HDSI、DFomain、《啊D注入工具》等網頁注入工具對網站進行檢測,如果不能被注入,才可以正式發布運行。

[1] 沈昌樣.網絡安全與信息戰.網絡安全技術與應用.2001.

[2] 陳學平,余永洪.中小型網站建設與管理.第二版,2009.

TH166

A

1009-0134(2010)10(上)-0192-04

10.3969/j.issn.1009-0134.2010.10(上).60

2009-12-28

陳學平(1967 -),男,副教授,研究方向為電子、通信、計算機網絡等。

猜你喜歡
頁面程序設置
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
地鐵出入段線轉換軌設置
主站蜘蛛池模板: 男女性午夜福利网站| 国产欧美日韩一区二区视频在线| 国产91九色在线播放| 新SSS无码手机在线观看| 91青草视频| 亚洲国产精品一区二区第一页免 | 亚洲系列无码专区偷窥无码| 精品一区二区三区四区五区| 青青极品在线| 免费高清毛片| 国产AV毛片| 欧美视频在线播放观看免费福利资源| 狼友视频一区二区三区| 毛片网站在线播放| AV熟女乱| 91色爱欧美精品www| 不卡国产视频第一页| 四虎免费视频网站| 99视频全部免费| 国产网站免费观看| 国产欧美日韩在线一区| 久久精品亚洲中文字幕乱码| 久久国产精品夜色| 美美女高清毛片视频免费观看| 国产精品熟女亚洲AV麻豆| 女人18毛片久久| 亚洲欧洲美色一区二区三区| 青草视频网站在线观看| 伊人国产无码高清视频| 国产美女免费| 正在播放久久| 欧美www在线观看| 毛片基地美国正在播放亚洲| 欧美第一页在线| 波多野结衣AV无码久久一区| 色婷婷成人| 亚洲色图欧美| 亚洲精品在线观看91| 99热这里只有精品免费| 久久精品国产亚洲麻豆| 中文字幕一区二区人妻电影| 天天综合色网| 久久这里只有精品66| 国产h视频免费观看| 欧美一区中文字幕| 有专无码视频| 国产精品无码影视久久久久久久 | 丰满人妻久久中文字幕| 欧美劲爆第一页| 国产精品永久免费嫩草研究院| 四虎永久在线精品国产免费 | 欧美一级大片在线观看| 免费可以看的无遮挡av无码| 亚洲第一av网站| 色婷婷成人网| 日韩最新中文字幕| 久无码久无码av无码| 亚欧乱色视频网站大全| 日本午夜影院| 青青极品在线| 亚洲青涩在线| 国产一区二区三区免费观看| 欧美a在线看| 亚洲国产精品无码久久一线| 欧美啪啪精品| 小说区 亚洲 自拍 另类| 热伊人99re久久精品最新地| 91久久夜色精品| 风韵丰满熟妇啪啪区老熟熟女| 日韩av资源在线| 国产H片无码不卡在线视频| 国产凹凸视频在线观看| 真人免费一级毛片一区二区| 国产91小视频在线观看 | 91亚洲免费视频| 波多野结衣二区| 最新日韩AV网址在线观看| 国产精品亚欧美一区二区| 婷婷亚洲视频| 国产www网站| 亚洲成年人片| 强乱中文字幕在线播放不卡|