sql盲注如何修补_对于sql注入怎么处理呢

对 于 JDBC而言, SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的, 这 是因 为 PreparedStatement 不允 许 在不同的插入 时间 改 变查询 的 逻辑结 构。

如 验证 用 户 是否存在的 SQL语 句 为 :

select count(*) from usertable where name='用 户 名 ' and pswd='密 码 '

如果在 用 户 名字段 中 输 入 ' or '1'='1' or '1'='1

或是在 密 码 字段 中 输 入 1' or '1'='1

将 绕过验证 ,但 这种 手段只 对 只 对 Statement有效, 对 PreparedStatement 无效。

PreparedStatement 相 对 Statement有以下 优 点:

1.防注入攻击

2.多次运行速度快

3.防止数据库缓冲区溢出

4.代 码 的可读性可维护性好

------------------------参数过滤器----------------------------

2-6里面讲了类似参数过滤器的概念

DAO类:

StringBuilder sb = new StringBuilder();

sb.append(" select * from goddess where 1=1");

sb.append(" and "+map.get("name")+" "+map.get("rela")+" "+map.get("value"));

【注释:该语句为 查询什么(name),关系是什么(rela),值是什么(value)】

PreparedStatement ptmt = conn.prepareStatement(sb.toString());

-------------

ACTION类:

param.put("name", "user_name");

param.put("rela", "=");

param.put("value", "'小美'");

params.add(param);

List result = g.query(params);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值