string sql = "select count(0) from admin where IsLocked=@IsLocked";
"@IsLocked"= "0" 时执行结果88 这是正确的
"@IsLocked"= "0 or 1=1" 时执行结果0
这样是可以防sql注入
string sql = "exec('select count(0) from admin where IsLocked='+@IsLocked)";
"@IsLocked"= "0" 时执行结果88
"@IsLocked"= "0 or 1=1" 时执行结果192
为什么???
string sql = "exec('select count(0) from admin where IsLocked='+@IsLocked)";
+@IsLocked可能就成字符处理了
若"@IsLocked"= "0" 时执行结果88 这是正确的
那么or连接的语句"@IsLocked"= "0 or 1=1" 时执行结果执行结果永远只可能大于等于88
不可能比88小
因为你可以看执行的sql语句是这样的
select count(0) from admin where IsLocked=0 or 1=1
哪怕1=1的条件不成立,那也是88条
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息