sql注入形式:...where name="+name+",这样的sql语句很容易sql注入,可以这样: jdbcTemplate.update("delete from userinfo where id=? and userId=?", new Object[]{userInfo.getId(),userInfo.getUserId()}); 我的一些代码,望有用!
Sql注入漏洞攻击:如1'or'1'='1 使用参数化查询避免 cmd.CommandText="select count(*) from 表名 where username=@a and password=@b"; cmd.parameters.Add(new SqlParameter("a","..")); cmd.parameters.Add(new SqlParameter("b",".."));
jdbcTemplate.update("delete from userinfo where id=? and userId=?", new Object[]{userInfo.getId(),userInfo.getUserId()});
我的一些代码,望有用!
不过想要学习如何防范,首先要学习如何攻击
上次看到一个大牛为了避免引号过滤,把sql语句全部转成16进制提交
还有就是不要同时查询用户名和密码
而是,先查询用户名,然后获得的密码在和输入的密码比较
使用参数化查询避免
cmd.CommandText="select count(*) from 表名 where username=@a and password=@b";
cmd.parameters.Add(new SqlParameter("a",".."));
cmd.parameters.Add(new SqlParameter("b",".."));