Secure Code Warrlor学习记录(二)


前言

Secure Code Warrlor是一个代码审计的练习平台。


一、SQL注入练习(3)

1.漏洞点为:

在这里插入图片描述

2.解决方案:

在这里插入图片描述

3.总结

    1)Hibernate是一种ORM框架,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象。
    2)在hibernate中最好使用 saveOrUpdate() 方法将实体保存到数据库中,而不是连接字符串,这样可以有效防止SQL注入。
    3)saveOrUpdate()方法作用:这个方法是更新或者插入,有主键就执行更新,如果没有主键就执行插入。

二、SQL注入练习(4)

1.漏洞点为:

在这里插入图片描述

2.解决方案:

在这里插入图片描述

3.总结

    1)可见使用了Hibernate框架,此时应注意是否使用了setParameter(),setProperties(),setEntity()等方法做参数绑定来预防SQL注入,查看是否有SQL语句直接拼接了。
在这里插入图片描述
    2)Hibernate框架三个绑定方法:
setEntity()方法 : 把参数与一个持久化类的实例绑定。
例如:setEntity()方法把“customer”命名参数与一个Customer对象绑定

session.createQuery("from Order o where o.customer = :customer")
.setEntity("customer",customer).list();

setParameter()方法:绑定任意类型的参数。

Query query = session.createQuery( " from Order o where o.id=:id and o.orderNumber like :orderNumber");
query.setParameter(" id" , 1);
//   query.setParameter(" orderNumber",orderNumber,Hibernate.STRING);  //hibernate 3.0的写法。
query.setParameter(" orderNumber",orderNumber, StringType.INSTANCE); //hibernate 4.2的写法

setProperties() 方法:用于把参数名称与一个对象的属性值绑定。

Customer c=new Customer();
c.setName("Tom"); 
c.setAge(20);
Query query =session.createQuery(" from Customer as c where c.name = : name and c.age = :age")
query.setProperties(c) ;

    3)可见此处没有对SQL语句做参数绑定,造成了SQL注入
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值