永发信息网

sql 注入问题 如下:

答案:2  悬赏:70  手机版
解决时间 2021-07-30 14:17
  • 提问者网友:温柔港
  • 2021-07-29 20:26

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

为什么???

最佳答案
  • 五星知识达人网友:西岸风
  • 2021-07-29 21:23

string sql = "exec('select count(0) from admin where IsLocked='+@IsLocked)";

+@IsLocked可能就成字符处理了

全部回答
  • 1楼网友:痴妹与他
  • 2021-07-29 23:02

若"@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条

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯