锘??xml version="1.0" encoding="utf-8" standalone="yes"?>一区二区三区精品,亚洲国产精品久久久久婷婷老年,国产精品久久久久久久龚玥菲 http://www.aygfsteel.com/xiaohuzi2008/category/53228.html闈㈡湞澶ф搗錛屾槬鏆栬姳寮zh-cnWed, 16 Jan 2013 14:21:11 GMTWed, 16 Jan 2013 14:21:11 GMT60銆愯漿銆戝弬鏁板寲鏌ヨ涓轟粈涔堣兘澶熼槻姝QL娉ㄥ叆http://www.aygfsteel.com/xiaohuzi2008/archive/2013/01/16/394326.html灝忚儭瀛?/dc:creator>灝忚儭瀛?/author>Wed, 16 Jan 2013 14:09:00 GMThttp://www.aygfsteel.com/xiaohuzi2008/archive/2013/01/16/394326.htmlhttp://www.aygfsteel.com/xiaohuzi2008/comments/394326.htmlhttp://www.aygfsteel.com/xiaohuzi2008/archive/2013/01/16/394326.html#Feedback0http://www.aygfsteel.com/xiaohuzi2008/comments/commentRss/394326.htmlhttp://www.aygfsteel.com/xiaohuzi2008/services/trackbacks/394326.html

寰堝浜洪兘鐭ラ亾SQL娉ㄥ叆錛屼篃鐭ラ亾SQL鍙傛暟鍖栨煡璇㈠彲浠ラ槻姝QL娉ㄥ叆錛屽彲涓轟粈涔堣兘闃叉娉ㄥ叆鍗村茍涓嶆槸寰堝浜洪兘鐭ラ亾鐨勩?/p>

鏈枃涓昏璁茶堪鐨勬槸榪欎釜闂錛屼篃璁鎬綘鍦ㄩ儴鍒嗘枃绔犱腑鐪嬪埌榪囪繖鍧楀唴瀹癸紝褰撶劧浜嗙湅鐪嬩篃鏃犲Θ銆?/p>

 

棣栧厛錛氭垜浠浜嗚ВSQL鏀跺埌涓涓寚浠ゅ悗鎵鍋氱殑浜嬫儏錛?/p>

鍏蜂綋緇嗚妭鍙互鏌ョ湅鏂囩珷錛?a >Sql Server 緙栬瘧銆侀噸緙栬瘧涓庢墽琛岃鍒掗噸鐢ㄥ師鐞?

鍦ㄨ繖閲岋紝鎴戠畝鍗曠殑琛ㄧず涓猴細(xì) 鏀跺埌鎸囦護(hù) -> 緙栬瘧SQL鐢熸垚鎵ц璁″垝 ->閫夋嫨鎵ц璁″垝 ->鎵ц鎵ц璁″垝銆?/span>

鍏蜂綋鍙兘鏈夌偣涓嶄竴鏍鳳紝浣嗗ぇ鑷寸殑姝ラ濡備笂鎵紺恒?/p>

 

鎺ョ潃鎴戜滑鏉ュ垎鏋?strong>涓轟粈涔堟嫾鎺QL 瀛楃涓蹭細(xì)瀵艱嚧SQL娉ㄥ叆鐨勯闄╁憿錛?/p>

棣栧厛鍒涘緩涓寮犺〃Users:

CREATE TABLE [dbo].[Users](  [Id] [uniqueidentifier] NOT NULL,  [UserId] [int] NOT NULL,  [UserName] [varchar](50) NULL,  [Password] [varchar](50) NOT NULL,   CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED   (  [Id] ASC  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]  ) ON [PRIMARY]

3F3ECD42B7A24B139ECA0A7D584CA195

 

鎻掑叆涓浜涙暟鎹細(xì)

INSERT INTO [Test].[dbo].[Users]([Id],[UserId],[UserName],[Password])VALUES (NEWID(),1,'name1','pwd1'); INSERT INTO [Test].[dbo].[Users]([Id],[UserId],[UserName],[Password])VALUES (NEWID(),2,'name2','pwd2'); INSERT INTO [Test].[dbo].[Users]([Id],[UserId],[UserName],[Password])VALUES (NEWID(),3,'name3','pwd3'); INSERT INTO [Test].[dbo].[Users]([Id],[UserId],[UserName],[Password])VALUES (NEWID(),4,'name4','pwd4'); INSERT INTO [Test].[dbo].[Users]([Id],[UserId],[UserName],[Password])VALUES (NEWID(),5,'name5','pwd5');

 

鍋囪鎴戜滑鏈変釜鐢ㄦ埛鐧誨綍鐨勯〉闈紝浠g爜濡備笅錛?/p>

楠岃瘉鐢ㄦ埛鐧誨綍鐨剆ql 濡備笅錛?/p>

select COUNT(*) from Users where Password = 'a' and UserName = 'b' 

榪欐浠g爜榪斿洖Password 鍜孶serName閮藉尮閰嶇殑鐢ㄦ埛鏁伴噺錛屽鏋滃ぇ浜?鐨勮瘽錛岄偅涔堝氨浠h〃鐢ㄦ埛瀛樺湪銆?/p>

鏈枃涓嶈璁篠QL 涓殑瀵嗙爜絳栫暐錛屼篃涓嶈璁轟唬鐮佽鑼冿紝涓昏鏄涓轟粈涔堣兘澶熼槻姝QL娉ㄥ叆錛岃涓浜涘悓瀛︿笉瑕佺籂緇撲笌鏌愪簺浠g爜錛屾垨鑰呭拰SQL娉ㄥ叆鏃犲叧鐨勪富棰樸?/strong>

 

 

鍙互鐪嬪埌鎵ц緇撴灉錛?/p>

15C19A6170754E21A52A79AAA01B9B48

榪欎釜鏄疭QL profile 璺熻釜鐨凷QL 璇彞銆?/p>

5CB6FB63846740C494C6466FE27D2B3C

 

娉ㄥ叆鐨勪唬鐮佸涓嬶細(xì)

select COUNT(*) from Users where Password = 'a' and UserName = 'b' or 1=1—'

榪欓噷鏈変漢灝哢serName璁劇疆涓轟簡 “b' or 1=1 –”.

 

瀹為檯鎵ц鐨凷QL灝卞彉鎴愪簡濡備笅錛?/p>

782A96FEE0784A39B5500CAE267B90EE

 

5A8FCD361FFE414AB18AEE5C9ED681DE

  鍙互寰堟槑鏄劇殑鐪嬪埌SQL娉ㄥ叆鎴愬姛浜嗐?/p>

 

寰堝浜洪兘鐭ラ亾鍙傛暟鍖栨煡璇?/strong>鍙互閬垮厤涓婇潰鍑虹幇鐨勬敞鍏ラ棶棰橈紝姣斿涓嬮潰鐨勪唬鐮侊細(xì)

class Program {     private static string connectionString = "Data Source=.;Initial Catalog=Test;Integrated Security=True";      static void Main(string[] args)     {         Login("b", "a");         Login("b' or 1=1--", "a");     }      private static void Login(string userName, string password)     {         using (SqlConnection conn = new SqlConnection(connectionString))         {             conn.Open();             SqlCommand comm = new SqlCommand();             comm.Connection = conn;             //涓烘瘡涓鏉℃暟鎹坊鍔犱竴涓弬鏁?            comm.CommandText = "select COUNT(*) from Users where Password = @Password and UserName = @UserName";             comm.Parameters.AddRange(             new SqlParameter[]{                                         new SqlParameter("@Password", SqlDbType.VarChar) { Value = password},                 new SqlParameter("@UserName", SqlDbType.VarChar) { Value = userName},             });              comm.ExecuteNonQuery();         }     } }

 

瀹為檯鎵ц鐨凷QL 濡備笅鎵紺猴細(xì)

exec sp_executesql N'select COUNT(*) from Users where Password = @Password and UserName = @UserName',N'@Password varchar(1),@UserName varchar(1)',@Password='a',@UserName='b'
exec sp_executesql N'select COUNT(*) from Users where Password = @Password and UserName = @UserName',N'@Password varchar(1),@UserName varchar(11)',@Password='a',@UserName='b'' or 1=1—'
 
 
 

鍙互鐪嬪埌鍙傛暟鍖栨煡璇富瑕佸仛浜嗚繖浜涗簨鎯咃細(xì)

1錛?strong>鍙傛暟榪囨護(hù)錛屽彲浠ョ湅鍒?@UserName='b'' or 1=1—'
2錛?strong>鎵ц璁″垝閲嶇敤

 

鍥犱負(fù)鎵ц璁″垝琚噸鐢紝鎵浠ュ彲浠ラ槻姝QL娉ㄥ叆銆?/strong>

 

棣栧厛鍒嗘瀽SQL娉ㄥ叆鐨勬湰璐紝

鐢ㄦ埛鍐欎簡涓孌礢QL 鐢ㄦ潵琛ㄧず鏌ユ壘瀵嗙爜鏄痑鐨勶紝鐢ㄦ埛鍚嶆槸b鐨勬墍鏈夌敤鎴風(fēng)殑鏁伴噺銆?/span>

閫氳繃娉ㄥ叆SQL錛岃繖孌礢QL鐜板湪琛ㄧず鐨勫惈涔夋槸鏌ユ壘(瀵嗙爜鏄痑鐨勶紝騫朵笖鐢ㄦ埛鍚嶆槸b鐨勶紝) 鎴栬?=1 鐨勬墍鏈夌敤鎴風(fēng)殑鏁伴噺銆?/span>

 

鍙互鐪嬪埌SQL鐨勮鎰忓彂鐢熶簡鏀瑰彉錛屼負(fù)浠涔堝彂鐢熶簡鏀瑰彉鍛紵錛屽洜涓烘病鏈夐噸鐢ㄤ互鍓嶇殑鎵ц璁″垝錛屽洜涓哄娉ㄥ叆鍚庣殑SQL璇彞閲嶆柊榪涜浜嗙紪璇戯紝鍥犱負(fù)閲嶆柊鎵ц浜嗚娉曡В鏋愩傛墍浠ヨ淇濊瘉SQL璇箟涓嶅彉錛屽嵆鎴戞兂瑕佽〃杈維QL灝辨槸鎴戞兂琛ㄨ揪鐨勬剰鎬濓紝涓嶆槸鍒殑娉ㄥ叆鍚庣殑鎰忔濓紝灝卞簲璇ラ噸鐢ㄦ墽琛岃鍒掋?/strong>

 

濡傛灉涓嶈兘澶熼噸鐢ㄦ墽琛岃鍒掞紝閭d箞灝辨湁SQL娉ㄥ叆鐨勯闄╋紝鍥犱負(fù)SQL鐨勮鎰忔湁鍙兘浼?xì)鍙樺寲锛屾墍琛ㄨ揪鐨勬煡璇㈠氨鍙兘鍙樺寲銆?/strong>

 

鍦⊿QL Server 涓煡璇㈡墽琛岃鍒掑彲浠ヤ嬌鐢ㄤ笅闈㈢殑鑴氭湰錛?/span>

DBCC FreeProccache  select total_elapsed_time / execution_count 騫沖潎鏃墮棿,total_logical_reads/execution_count 閫昏緫璇? usecounts 閲嶇敤嬈℃暟,SUBSTRING(d.text, (statement_start_offset/2) + 1,          ((CASE statement_end_offset            WHEN -1 THEN DATALENGTH(text)           ELSE statement_end_offset END              - statement_start_offset)/2) + 1) 璇彞鎵ц from sys.dm_exec_cached_plans a cross apply sys.dm_exec_query_plan(a.plan_handle) c ,sys.dm_exec_query_stats b cross apply sys.dm_exec_sql_text(b.sql_handle) d --where a.plan_handle=b.plan_handle and total_logical_reads/execution_count>4000 ORDER BY total_elapsed_time / execution_count DESC;
 

18EFAED775BF4DB9A36C57B39EC6913D

 

鍗氬鍥湁綃囨枃绔狅細(xì) Sql Server鍙傛暟鍖栨煡璇箣where in鍜宭ike瀹炵幇璇﹁В

 

鍦ㄨ繖綃囨枃绔犱腑鏈夎繖涔堜竴孌碉細(xì)

image

 

榪欓噷浣滆呮湁涓鍙ヨ瘽錛?#8221;涓嶈繃榪欑鍐欐硶鍜岀洿鎺ユ嫾SQL鎵ц娌″暐瀹炶川鎬х殑鍖哄埆

浠諱綍鎷兼帴SQL鐨勬柟寮忛兘鏈塖QL娉ㄥ叆鐨勯闄╋紝鎵浠ュ鏋滄病鏈夊疄璐ㄦх殑鍖哄埆鐨勮瘽錛岄偅涔堜嬌鐢╡xec 鍔ㄦ佹墽琛孲QL鏄笉鑳介槻姝QL娉ㄥ叆鐨勩?/p>

 

姣斿涓嬮潰鐨勪唬鐮侊細(xì)

private static void TestMethod() {     using (SqlConnection conn = new SqlConnection(connectionString))     {         conn.Open();         SqlCommand comm = new SqlCommand();         comm.Connection = conn;         //浣跨敤exec鍔ㄦ佹墽琛孲QL銆         //瀹為檯鎵ц鐨勬煡璇㈣鍒掍負(fù)(@UserID varchar(max))select * from Users(nolock) where UserID in (1,2,3,4)銆銆         //涓嶆槸棰勬湡鐨?@UserID varchar(max))exec('select * from Users(nolock) where UserID in ('+@UserID+')')             comm.CommandText = "exec('select * from Users(nolock) where UserID in ('+@UserID+')')";         comm.Parameters.Add(new SqlParameter("@UserID", SqlDbType.VarChar, -1) { Value = "1,2,3,4" });         //comm.Parameters.Add(new SqlParameter("@UserID", SqlDbType.VarChar, -1) { Value = "1,2,3,4); delete from Users;--" });         comm.ExecuteNonQuery();     } }

 

鎵ц鐨凷QL 濡備笅錛?/p>

exec sp_executesql N'exec(''select * from Users(nolock) where UserID in (''+@UserID+'')'')',N'@UserID varchar(max) ',@UserID='1,2,3,4'
D25E99E053D549AF955518AD0A320259
 
鍙互鐪嬪埌SQL璇彞騫舵病鏈夊弬鏁板寲鏌ヨ銆?/pre>  
 
濡傛灉浣犲皢UserID璁劇疆涓?#8221;

1,2,3,4); delete from Users;—-

”,閭d箞鎵ц鐨凷QL灝辨槸涓嬮潰榪欐牱錛?/pre>  
exec sp_executesql N'exec(''select * from Users(nolock) where UserID in (''+@UserID+'')'')',N'@UserID varchar(max) ',@UserID='1,2,3,4); delete from Users;--'

 

涓嶈浠ヤ負(fù)鍔犱簡涓狜UserID 灝變唬琛ㄨ兘澶熼槻姝QL娉ㄥ叆錛屽疄闄呮墽琛岀殑SQL 濡備笅錛?/p>

 

3C50EFE68418448496BAC7773067AB6F
 
浠諱綍鍔ㄦ佺殑鎵цSQL 閮芥湁娉ㄥ叆鐨勯闄╋紝鍥犱負(fù)鍔ㄦ佹剰鍛崇潃涓嶉噸鐢ㄦ墽琛岃鍒掞紝鑰屽鏋滀笉閲嶇敤鎵ц璁″垝鐨勮瘽錛岄偅涔堝氨鍩烘湰涓婃棤娉曚繚璇佷綘鍐欑殑SQL鎵琛ㄧず鐨勬剰鎬濆氨鏄綘瑕佽〃杈劇殑鎰忔濄?/pre>  
 
榪欏氨濂藉儚灝忔椂鍊欑殑濉┖棰橈紝鏌ユ壘瀵嗙爜鏄?____) 騫朵笖鐢ㄦ埛鍚嶆槸(____)鐨勭敤鎴楓?/pre>  
涓嶇浣犲~鐨勬槸浠涔堝鹼紝鎴戞墍琛ㄨ揪鐨勫氨鏄繖涓剰鎬濄?/pre>  
 
鏈鍚庡啀鎬葷粨涓鍙ワ細(xì)鍥犱負(fù)鍙傛暟鍖栨煡璇㈠彲浠ラ噸鐢ㄦ墽琛岃鍒掞紝騫朵笖濡傛灉閲嶇敤鎵ц璁″垝鐨勮瘽錛孲QL鎵瑕佽〃杈劇殑璇箟灝變笉浼?xì)鍙樺寲锛屾墍浠ュ氨鍙互闃叉SQL娉ㄥ叆,濡傛灉涓嶈兘閲嶇敤鎵ц璁″垝錛屽氨鏈夊彲鑳藉嚭鐜癝QL娉ㄥ叆錛?br />瀛樺偍榪囩▼涔熸槸涓鏍風(fēng)殑閬撶悊錛屽洜涓哄彲浠ラ噸鐢ㄦ墽琛岃鍒掋?/pre>鍘熸枃鍑鴻嚜錛?div>http://www.cnblogs.com/LoveJenny/archive/2013/01/15/2860553.html

]]> 主站蜘蛛池模板: 郧西县| 平邑县| 凤山市| 元朗区| 锡林浩特市| 曲松县| 兴业县| 阆中市| 舟山市| 延津县| 原平市| 嘉祥县| 象州县| 巴塘县| 龙州县| 双牌县| 河池市| 阳信县| 大余县| 托克托县| 宜丰县| 新晃| 务川| 即墨市| 巍山| 大英县| 青岛市| 工布江达县| 水富县| 金溪县| 怀柔区| 汕头市| 车致| 横峰县| 西和县| 运城市| 鲁山县| 博爱县| 镇雄县| 长顺县| 广安市|