软件宝宝系列——SQL注入篇

it2025-03-27  22

今天,我给大家介绍的是软件宝宝如何防止SQL注入。 软件宝宝安全成长史系列的第二点: “2、教会“软件宝宝”什么是好人,什么是坏人,什么东西可以吃,什么东西不能够吃!” 接下来,我们看看软件宝宝在未学会第二点之前所存在的危险,大家看了以后,一定要记得看看自己的软件宝宝是不是也存在这种威胁了? public void UnsafeQuery (string name) { IDbConnection dbConnection = new SqlConnection (); dbConnection.Open (); IDbCommand dbCommand = dbConnection.CreateCommand (); dbCommand.CommandText = "SELECT name, bank_account FROM customers WHERE name = ; IDataReader dataReader = dbCommand.ExecuteReader (); PrintAllValuesInReader (dataReader); dataReader.Close (); dbCommand.Dispose (); dbConnection.Close (); } 上面的代码,大家看出问题了吧,还没看出,打PP了。 假设我们的程序当中正在使用UnsafeQuery (txtInput.text.trim); 当我们在txtInput.text文本框中,我们给宝宝喂点“HappyQQ';drop table customers;--“ 宝宝自从吃了这个东西以后,就生病了! 所以说,我们一定要教会软件宝宝什么东西该吃,什么不该吃? 好了,接下来,我们就教教软件宝宝什么东西能吃,什么不能够吃。 告诉宝宝第一种方法:(不能够吃的,全部都不吃) private string FormatRemoveSQL( string strSQL ) { string strCleanSQL = strSQL; if( strSQL != null ) { Array BadCommands = Split( ',' ); //数组中保存了哪些是宝宝不能够吃的东西,这下可安全喽! int intCommand; for( intCommand = 0; intCommand <= BadCommands.Length - 1; intCommand++ ) { strCleanSQL = Regex.Replace( strCleanSQL, Convert.ToString( BadCommands.GetValue( intCommand ) ), " ", RegexOptions.IgnoreCase ); } strCleanSQL = strCleanSQL.Replace( "'", "''" ); } return strCleanSQL; } 好了,接下来,我们用UnsafeQuery (FormatRemoveSQL(txtInput.text.trim)); 软件宝宝以后就不会再吃这个坏东西了!(SQL注入) 告诉软件宝宝,第二种方法,坏东西不要吃,但是还是可以看看的嘛! public void SafeQuery (string name) { IDbConnection dbConnection = new SqlConnection (); dbConnection.Open (); IDbCommand dbCommand = dbConnection.CreateCommand (); dbCommand.CommandText = "SELECT name, bank_account FROM customers WHERE name = @name"; dbCommand.Parameters.Add (new SqlParameter ("@name", DbType.String).Value = name); IDataReader dataReader = dbCommand.ExecuteReader (); PrintAllValuesInReader (dataReader); dataReader.Close (); dbCommand.Dispose (); dbConnection.Close (); } 当我们的程序中使用safeQuery (txtInput.text.trim);   最后总结:对付SQL注入,我们可以过滤其危险字符,或者采用参数化传值方式都可以。(文章中所介绍的方法同样可以应用到XSS漏洞的防护)

作者:黄启清

日期:2008-7-3

同时,谨以此文献给我最亲爱的妈妈(http://mama520.cn)

CNBLOGS安全团队欢迎您的加入!  

转载于:https://www.cnblogs.com/HappyQQ/archive/2008/07/03/1235164.html

最新回复(0)