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

基于參數查詢防止SQL注入攻擊的方法

2012-01-12 06:41:48隋勵麗張恒博
大連民族大學學報 2012年5期
關鍵詞:數據庫

隋勵麗,張恒博

(大連民族學院計算機科學與工程學院,遼寧大連 116605)

基于參數查詢防止SQL注入攻擊的方法

隋勵麗,張恒博

(大連民族學院計算機科學與工程學院,遼寧大連 116605)

本文分析了SQL注入攻擊的原理和攻擊步驟的方法,針對ASP網站重點分析了SQL注入攻擊的實現原理、實現過程,并且針對性地提出了利用參數查詢有效預防SQL注入攻擊的策略實現。該策略包括檢查用戶輸入、使用類型安全的SQL參數、使用存儲過程、進行數據加密以及進行安全部署等,能很好地加強ASP網站應用程序的安全性,可有效防范絕大多數針對網站本身SQL注入式攻擊。

SQL;SQL注入攻擊;參數查詢;ADO

隨著互聯網的發展,大量的web網站開始涌現,極大地方便了人們的信息獲取需求。與此同時,黑客針對網站的攻擊也屢屢出現,造成了或多或少的經濟損失。在這些攻擊中,SQL注入攻擊是黑客最常用手段之一。由于SQL數據庫的廣泛使用,以及web程序、web服務器和數據庫服務器等的一些常見的漏洞,導致了SQL注入的普遍性與巨大危害性。因此,研究SQL注入攻擊及其應對方案對保障網站安全具有重要意義[1-6]。本文結合示例介紹SQL注入式攻擊行為以及如何對該類型的攻擊進行有效防范。

1 SQL注入攻擊

SQL注入攻擊源于英文“SQL Injection Attack”,以下簡稱SIA。目前對SQL注入技術還沒有標準的定義,常見的是對這種攻擊形式、特點的描述。所謂SQL注入攻擊,就是利用SQL注入技術來實施的網絡攻擊。在基于SQL Server服務器的Web應用程序中,因為開發周期和程序員水平差異等因素的影響,許多該類型的應用程序在設計與開發時沒有充分考慮到數據合法性校驗問題,對SQL語句傳入的參數沒有做出嚴格的檢查和處理,使其在應用中存在安全隱患。通常將存在SQL注入點的程序或者網站稱為SQL注入漏洞,即SQL注入是在有數據庫連接的Web應用程序中出現的一種漏洞,在這類應用程序中允許用戶輸入查詢條件,攻擊者將查詢條件嵌入到SQL查詢語句中,利用SQL語法構造出畸形的SQL語句,發送到與該應用程序相關聯的數據庫服務器中去執行,導致攻擊者能夠欺騙數據庫服務器執行非授權的任意查詢,根據程序查詢返回的結果,攻擊者可以獲取他想得到的信息,比如數據庫服務器管理員的賬號和密碼。

大多數程序都會或多或少地使用SQL語句和數據庫打交道。在程序代碼中,SQL語句以字符串的形式存在,如:

這個例子以數據列column1、column2的值分別為value1、value2作為過濾條件,從數據表table1中查詢column1、column2等數據列。其中column1為整數類型,column2為字符串類型。很多時候,value1與value2的值在程序運行時才能確定,這意味著SQL語句只能在程序運行中動態生成。不少開發人員喜歡采用字符串拼湊的方式生成SQL語句,形如

這種生成SQL語句的方式存在安全隱患,很容易導致SQL注入式攻擊。又以上面的SQL語句為例,如果攻擊者為column2指定的值為“’OR‘’=‘”(不包含雙引號),則得到的SQL語句為

OR‘’=‘’,使WHERE子句形同虛設,table1中所有的記錄都會查詢出來。如果攻擊者更缺德一點,為column2指定的值為“’;DELETE FROM table1WHERE‘’=‘”(不包含雙引號),則得到的SQL語句為

執行之后,數據表table1就被清空了[1]。

2 SQL注入的防御策略

以上的問題都可以通過參數化查詢解決。上面的SQL語句如果采用參數化查詢的方式,則表示為:

其中兩個問號(?)是待定的數據列的值。在有些開發平臺,問號的地方可能用有指定標記的命名參數代替,如:

不管是問號還是命名參數,咋一看都似乎與字符串格式化差不多。不過,在參數化查詢中,程序直接把這個包含待定值的SQL語句提交給數據庫,由數據庫引擎為之生成查詢計劃,之后,程序以參數的方式提供這些值。數據庫引擎把參數中的值應用到查詢計劃中,然后執行查詢結果。如果改變參數的值后再執行,則得到不同的查詢結果,但SQL語句不需要重新提交,查詢計劃也不需要重新生成,參數的修改對查詢計劃沒有影響[3]。

哪怕參數中包含精心設計的特殊字符,也不會形成SQL注入式攻擊。參數改變的次數越多,則查詢計劃的重用性越高。與程序設計語言中的函數或過程類似,SQL語句的參數也可以分為輸入參數、輸出參數及輸入輸出參數,其中輸入參數最為常見,上面的查詢例子中的兩個參數都是輸入參數。參數的類型可以是整數、浮點數、字符串乃至二進制數據,采用參數化查詢,可以很方便地導入二進制數據。

3 SQL注入防御策略的實現

參數化查詢得到各種主流編程語言和開發工具的廣泛支持。下面分別介紹ADO這3種數據訪問模型中的參數化查詢方式。

3.1 ADO中的參數化查詢

在ADO中,查詢的一般過程是創建Connection對象連接數據庫,再創建Command對象執行SQL語句或存儲過程。如果SQL語句有返回數據,則用游標方式遍歷Recordset中的每一行,讀取查詢結果。在一般場合,Command對象可以省略,其只能由Connection對象和Recordset對象代替。不過如果采用參數化查詢,則少不了Com-mand對象。該對象創建后,先指定SQL語句,然后創建SQL語句中待定的各個參數,給參數賦值后再執行Command對象。

待定的參數用Parameter對象代表。在Parameter對象中,Name屬性可設置或返回參數名稱,Value屬性可設置或返回參數值,Direction屬性指示是輸入參數、輸出參數還是輸入輸出參數,Type屬性定義參數的數據類型,其他幾個屬性可設置或返回參數特性。

Command對象有一個Parameters屬性,它是Parameters集合類型,其中包含SQL語句(或存儲過程)的所有參數。在Parameters集合中,可以通過名稱或序號訪問各個參數。通常用Command對象的CreateParameter方法創建每個Parameter對象,再用Parameters集合的Append方法添加進來。Command對象還有一個布爾類型的Prepared屬性,該屬性如果為True,則表示該指令在第一次執行之前必須保存查詢語句[2]。

3.2 ASP防御SQL注入舉例

為了使大家對ADO中的參數化查詢有更清晰的認識,這里舉一個例子。在這個例子中,在login.htm網頁上輸入賬號和密碼后,提交執行op.asp訪問Access數據庫。數據庫路徑為d:siatest.mdb,里面的數據表usertable包含兩個數據列,其中username,password都為文本類型。

Login.htm中輸入賬號文本框名稱為UID,輸入密碼文本框名稱為PWD,form表單的action屬性值為”op.asp”

Op.asp的代碼如下:

以上程序,如果把CommandText的值改為:" select*from usertable where username="&uid&"and password="&pwd&";",當賬號輸入1 or‘1’=1,密碼輸入任何值都能通過。而本程序賬號輸入1 or‘1’=1,密碼輸入任何值都不能通過,只有賬號和密碼都正確,才能通過。由此可見本方法有效防止了SQL注入攻擊。

4 結語

本文針對ASP網站,重點介紹SQL注入攻擊的實現原理、實現過程、防御策略及防御策略實現,這些策略包括:檢查用戶輸入、使用類型安全的SQL參數、使用存儲過程、進行數據加密以及進行安全部署等。全部使用這些策略能很好地加強ASP網站應用程序的安全性,可有效防范絕大多數針對網站本身SQL注入式攻擊。當然,網絡環境的安全性和系統平臺的安全性也不容忽視,只有各個環節的安全性得到強化,才能最大限度保障安全。

[1]王志虎.SQL注入攻擊及其預防方法研究[J].煤炭技術,2011(1):95-97.

[2]佟利亭.Asp中利用參數對象實現參數查詢[J].福建電腦,2009(5):178.

[3]王小鑒.SQL參數化查詢詳解[J].電腦編程技巧與維護,2011(1):42-48.

[4]高洪濤.SQL注入攻擊途徑及策略分析[J].網絡安全技術與應用,2011(3):14-16.

[5]吳國標.SQL注入攻擊原理與防范[J].紹興文理學院學報:自然科學版,2010(4):64-68.

[6]李婷.ASP.NET網站中SQL注入攻擊及防范[J].科技資訊,2010(34):23.

A Method to Defend against SQL Injection Attack Based on Parameter Query

SUI Li-li,ZHANG Heng-bo
(School of Computer Science&Engineering,Dalian Nationalities University,Dalian Liaoning 116605,China)

This paper describes the principle and the methods of SQL injection attacks.And the paper puts the emphasis on the implementation methods and procedures of SQL injection attacks to the ASP website.The strategies are proposed to defend SQL injection attacks effectively by using the parameter query methods,which include checking user input,using type-safe SQL parameters,using stored procedures and so on.And the data encrypting and security deployment are used as well.The methods proposed in this paper can reinforce the security of the ASP web application,and can effectively prevent the website from the most of SQL injection attacks.

SQL;SIA;parameter query;ADO

TP393.08

A

1009-315X(2012)05-0495-03

2011-11-07;最后

2012-02-10

隋勵麗(1972-),女,遼寧營口人,講師,主要從事計算機應用技術研究。

(責任編輯 劉敏)

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 亚洲免费三区| 国产福利在线免费| 91香蕉视频下载网站| 午夜精品久久久久久久无码软件 | 国产簧片免费在线播放| 欧美色亚洲| 国产丝袜啪啪| 日韩视频免费| 久久精品日日躁夜夜躁欧美| 久久精品这里只有精99品| 97视频精品全国在线观看| 免费又黄又爽又猛大片午夜| 99热这里只有精品在线观看| 天天激情综合| 日韩成人免费网站| 日本高清在线看免费观看| 国产丝袜精品| 色天天综合| 国产99热| 久久综合伊人77777| 男女精品视频| 欧美精品黑人粗大| 久久中文无码精品| 日韩经典精品无码一区二区| 色窝窝免费一区二区三区| 亚洲中久无码永久在线观看软件| 在线精品视频成人网| 国产精品一区在线麻豆| 亚洲另类色| 久久精品人妻中文系列| 亚洲成年人片| 精品久久香蕉国产线看观看gif| а∨天堂一区中文字幕| 91极品美女高潮叫床在线观看| 亚洲无线国产观看| 国产高清国内精品福利| 毛片免费高清免费| 亚洲精品动漫| 中文字幕2区| 偷拍久久网| 国产凹凸一区在线观看视频| 欧美视频二区| 91毛片网| 色欲国产一区二区日韩欧美| 亚洲性视频网站| 久久精品丝袜| 亚洲婷婷六月| 久久黄色免费电影| 国产成人精品免费av| 亚洲无码电影| 天天躁夜夜躁狠狠躁图片| 五月六月伊人狠狠丁香网| 亚洲免费播放| 91九色最新地址| 欧美成人手机在线视频| 动漫精品啪啪一区二区三区| 重口调教一区二区视频| 成人毛片在线播放| 久操线在视频在线观看| 国产色婷婷| 国产成人一区| 99久久性生片| 成人字幕网视频在线观看| 五月天丁香婷婷综合久久| 国产免费福利网站| 一级一级特黄女人精品毛片| 久久综合色天堂av| 99久久婷婷国产综合精| 欧美亚洲一二三区| 日韩免费无码人妻系列| 亚洲Va中文字幕久久一区| 一区二区偷拍美女撒尿视频| 国产精品性| 午夜高清国产拍精品| www.91中文字幕| 久久精品国产国语对白| 国产老女人精品免费视频| 国产精品久久自在自线观看| 免费人成网站在线观看欧美| 在线视频精品一区| 天天综合网亚洲网站| 一级毛片免费观看久|