use*_*512 2 java orm spring hibernate sql-injection
我有类似的领域模型
@OneToMany(targetEntity=adv.domain.City.class...)@OneToMany(targetEntity=adv.domain.Distinct.class)我的目标是当用户在浏览器中按删除按钮时删除不同.在该控制器获得不同的id并将其传递给业务层.其中方法DistinctService.deleteDistinct(Long distinctId)应该委派给DAO层.
所以我的问题是在哪里放置安全限制以及实现它的最佳方法是什么.我想确定我删除了真实用户的不同,即城市的真正所有者,而城市是不同的真正所有者.因此,没有人可以使用像localhost/deleteDistinct/5这样的简单URL删除所有者的ditinct.
我可以从我的控制器中的httpSession获取用户并将其传递给商务层.
之后,我可以获得该用户的所有城市并对其进行评估以确定,即citie.id == distinct.city_id,然后删除distinct.
但在我看来这很荒谬.
我也可以写这样的SQL查询...
delete from
t_distinct
where
t_distinct.city_id in (
select
t_city.id
from
t_city
left join t_user on t_user.id = t_city.owner_id
where
t_user.id = ?
)
and t_distinct.id = ?
Run Code Online (Sandbox Code Playgroud)
那么添加这样的限制的最佳做法是什么.
我正在使用Hibernate,Spring,Spring MVC ..
谢谢
您要求的不是SQL注入预防.您需要确保尝试删除的用户已获得授权.
只要您检查访问该页面的用户是否有权删除您尝试删除的行(这将在业务层中进行检查),并且只有在用户通过身份验证并授权执行操作时才允许删除命令.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |