能不能用DataTable类实现身份验证安全登陆?
过去做Login页面的时候,都是使用参数化SQL语句去初始化SqlCommand,为了避免有人用恶意SQL代码去注入。不过我觉得这种办法就要每次登陆都连接数据库,现在我想用DataTable去脱机验证,想使用DataTable.Select(string)方法,但我想不到如何去避免恶意SQL注入。在MDSN文档里面写着DataTable.Select(string)方法中的参数是筛选条件,请问这个string是不是也可以是SQL查询文本?有没有办法实现参数化? 问题点数:80、回复次数:4Top
1 楼saucer(思归)回复于 2004-12-01 05:47:32 得分 80
string strExpr = String.Format("a = '{0}'", YourValue.Replace("'","''"));
DataRow[] foundRows = myTable.Select(strExpr);
Top
2 楼lckboy(琨珸)回复于 2004-12-01 16:31:54 得分 0
这样也可以给人攻击的
例如:
String str = "select count(*) from login where UserID = '"+Userid.Text+"'and Password = '"+Passid.Text+"'";
只要在Passid.Text中写
';任何恶意SQL代码Top
3 楼sweet12345(幸福的狗狗)回复于 2004-12-01 16:59:12 得分 0
你可以使用cookies,这样也不错Top
4 楼saucer(思归)回复于 2004-12-01 22:03:40 得分 0
the following will help the sql injection problem, although not perfect
string s = "...";
s =s.Replace("'","''");
Top




