Act*_*rus 6 java spring hibernate veracode
我有一个使用 hibernate 的 JEE 应用程序,Veracode 抱怨某些我不知道如何修复的代码行。基本上,我们有一个通用类来对实体执行基本操作
public void delete(T entity, final boolean cachable) {
getHibernateTemplate().setCacheQueries(cachable);
getHibernateTemplate().delete(entity);
}
Run Code Online (Sandbox Code Playgroud)
然后这段代码被这样调用
...
connectionDAO.delete(user, nbMaxConnections);
...
Run Code Online (Sandbox Code Playgroud)
例如,实体 User 看起来像这样(我没有放置完整的类定义)
@Entity
@Auditable
public class User extends Profile implements Cloneable,UserDetails,Principal
{
/** The enabled. */
private Boolean enabled = true;
/** The reason for disabled. */
private String reasonForDisabled = null;
/** The disabled date. */
@Temporal(TemporalType.TIMESTAMP)
private Date disabledDate = null;
/** The parent. */
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn
private Group parent = null;
/** The information. */
@Embedded
private UserInformation information = null;
/** The released date. */
@Temporal(TemporalType.TIMESTAMP)
private Date releasedDate = null;
/** The nb wrong attempts. */
private Integer nbWrongAttempts = null;
private String salt;
Run Code Online (Sandbox Code Playgroud)
Veracode 抱怨 hibernate 模板的 delete() 调用,描述如下:
在对 org.springframework.orm.hibernate5.HibernateOperations.delete 的调用中,可以使用可由外部提供的值控制的主键来执行数据访问语句。如果提供的主键未经过正确验证,并且底层存储不限制仅访问用户应被授予访问权限的实体,则攻击者可能会引用未经授权的记录。
我不知道要检查什么(在删除该实体之前是否应该首先检查该实体是否存在于数据库中?)
问候
| 归档时间: |
|
| 查看次数: |
2583 次 |
| 最近记录: |