Spring mvc + jpa 执行更新操作的一个安全性问题

2015-06-10 21:42:01 +08:00
 letitbesqzr

背景

有一个表:Member
字段: id username password sex name age .........
字段比较多,在后台接收参数:

public String updateInfo(Member member){
memberDao.update(member);
}

在一个修改用户资料的页面,只允许修改一些基本信息(姓名 年龄 性别 之类的),在前台的地方构建 sex name age 三个表单,提交到方法内,由spring mvc自动给set到bean去..

遇到的问题

这样就有一安全问题,如果这个用户是不允许修改用户名 或者 不允许修改密码的... 用户猜到是用这个模式进行的更新操作,自己构造 username password 参数提交,spring mvc 找到member中有这些属性,就自动设置上去了.. 执行update的时候就会一并更新了。

自己想到的解决办法

如果不用自动设置到bean的模式,单独接收每一个参数,那如果参数很多就会非常的乱而且繁琐,请问各位有没有一个比较好的解决方案。

2671 次点击
所在节点    Java
6 条回复
cloudhunter
2015-06-10 22:02:25 +08:00
做 updateInfo 之前,检查下用户有没有相应的更新字段权限不就结了
letitbesqzr
2015-06-10 22:03:59 +08:00
@cloudhunter 那样做的麻烦程度,不就和每个参数都单独接收一样了?
saximoer
2015-06-10 22:07:49 +08:00
页面上看到的VO 对象和实际的ENTITY 不是一个对象即可~
monsoon
2015-06-10 22:43:08 +08:00
搜索 BeanUtils
BuilderQiu
2015-06-11 09:27:54 +08:00
前后台不是一个VO,转换一次即可
or
根据ID或者登陆用户什么的查询出被修改的数据,然后从前台传来的对象中取出有权限修改的部分赋值,更新。
letitbesqzr
2015-06-11 10:21:45 +08:00
@BuilderQiu 采用第二种方案.. 3q

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/197601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX