/getUserById/{userId}这样的请求毫无安全性可言,怎么解决问题呢

亲爱的Joe 2018-04-04 03:34:52
/getUserById/{userId}

上面那个url可以通过userId获取到User的信息。
我们假设只有user所在公司才能拿到该User的信息。那么问题来了。假如其他单位的管理员登录后把上面的userId改成了别的攻速的User的userId,那他不就拿到别别人公司user的信息了么?
这样的问题要怎么解决啊?

再升级下问题。比如只有单位和本人才应该拿到自己的信息呢?
...全文
1519 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
白_开_心 2020-02-29
  • 打赏
  • 举报
回复
那是不是还有垂直权限漏洞
Zoey_C 2018-04-10
  • 打赏
  • 举报
回复
没有权限控制嘛?请求路径不能隐藏嘛。
亲爱的Joe 2018-04-10
  • 打赏
  • 举报
回复
谢谢大家的回答了。 我解决了,虽然不够完美,也可能没有充分的使用shiro框架的功能,不过,大体上是解决了。 我使用了shiro中的session来保存了一些登录用户的数据,然后在某些地方做了一些判断,比如根据用户id获取用户数据的时候,我要判断下这个用户的id是不是当前登录用户的id。 或者单位级别用户根据用户id获取用户信息的时候,我还要求请求信息的单位账号提供自己的单位id,我自己主动判断是否是所请求用户的单位。 另外,我知道了这种问题的专业术语:水平权限漏洞。 大家想学习的可以去自己搜搜看看。
  • 打赏
  • 举报
回复
给登录者加这个接口的权限。过滤器判断下即可
yjsl__ 2018-04-09
  • 打赏
  • 举报
回复
员工应该是有个部门外键,删除前,先根据员工的部门外键找到对应的经理,判断该经理的id和当前登录用户是否一样
maradona1984 2018-04-09
  • 打赏
  • 举报
回复
难道你们没有权限控制? 加个数据权限控制就可以了
Braska 2018-04-09
  • 打赏
  • 举报
回复
这跟url写法没关系吧 就算userId不写在url里 也可以从request里面拿到userId 归根结底就是权限控制的问题
亲爱的Joe 2018-04-09
  • 打赏
  • 举报
回复
引用 4 楼 yjsl__ 的回复:
两家公司能共用一张user表也是第一次听说
不要太较真,那就不说两家公司,说一家公司好了。 公司的a部门职工信息职能由a部门的经理看,假如b部门经理登录后换了个a部门员工的id就去删除了,你说这样的需求还不多么?
yjsl__ 2018-04-05
  • 打赏
  • 举报
回复
两家公司能共用一张user表也是第一次听说
这里有bug 2018-04-04
  • 打赏
  • 举报
回复
所有这种接口的,可在访问的接口上面加一个拦截器,拦截器的内容就是判断是否单位和本人
落落叶叶无声 2018-04-04
  • 打赏
  • 举报
回复
访问/getUserById/{userId}页面时将userId所属单位和当前管理员的单位对比下,不同就提示不存在,相同就给过。
qq_41228556 2018-04-04
  • 打赏
  • 举报
回复
你可以判断一下,他要获取用户信息的公司与他所在公司是否一致不就行了

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧