采用字符串式:
user: sa’ or ’1=1 或 sdfsdfsd’ or ’1=1 — (无论用户名密码是否正确都可进入。注:mysql注释用#,sqlserver用–)
password: sdfsdf ( 随便 )
用字符串连接就变成: select * from frmUser where user = ‘sa’ or ’1=1′ and password = ‘sdfsdf’ 通过!造成注入。
万能密码:’or”=”or”=’
采用传参方式:
command.CommandText = “SELECT * FROM frmUser WHERE user = @user”;
SqlParameter sp = new SqlParameter( “@user” ,8);
若传user = sa’ or ’1=1
则sql 语句变成: select * from frmUser where user = “sa’ or ’1=1′ ” and and password = ‘sdfsdf’
将user传的参数限定在一个变量内。原理是在参数外加上”", 之后若参数内存在单引号或双引号,则统一转成单引号,因最外部是双引号,参数中的单引号,双引号将会被当作用户名的一部分,不会当成分隔,不会象字符串连接一样使sql语句被截断,产生多个条件!
【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。