有两个表用户表 t_user,客户表 t_customer 有两个用户user1和user2,有一个客户cus1是属于user1 假设cus1客户ID是1,详情页路径是 http://127.0.0.1:8080/customer.action?cusid=1 怎么防止user2用户登录后,请求cust1的用户信息。(浏览器直接跳转客户 cust1 的请求) 说白就是用户通过 firefox、chrome等浏览器查看请求路径,然后随便改ID值去获取不属于他的信息 这种场景怎么去统一处理这种情况 |
|
10分 |
session中有用户登陆过的信息啊
没有登陆 直接拦截,登陆过了匹配权限 |
5分 |
一楼正解,
详细点就是将用户id存到session中, 然后跟请求中的cusid参数比较,不一样就跳转登陆界面, 或者跳转 http://127.0.0.1:8080/customer.action?cusid=2(session中存储的id) |
5分 |
通过后台判断,只能获取传过来的ID所对应的用户信息。
|
5分 |
1、判断当前登录用户
2、查询当前用户的详细信息 |
那每个业务点不都要去做这个匹配 1、如果cust1有个订单ord1的详情 或 后期再有个其他的详情功能,这样每次都需要修改这个限制。 第一点只是麻烦些,后期加点工作量就行了。 |
|
5分 |
用过滤器,把user1的ID放在session中,把user2的登陆ID和user1在过滤器里比较就行了
|
这种情况这样解决
1,不要用get请求,增加修改的难度(不能真正解决问题,但能过滤一些不懂html技术的) 2,外键匹配,属于用户的数据肯定有关联的外键,利用外键匹配登陆用户的id,对比是否一致。 |
|
不用get请求这个可以,主要现在系统很多都是这样的,要改动的话工作量比较大。 第二点原因跟前几位说明的意思一样,在拦截器或过滤器加判断,这个是可以的,但是这个局限性太大,我每增一个详情功能都要在这个过滤器添加这个业务点的权限,也可以用数据库配置不用改代码,但这个总是要去改代码或加数据配置,万一忘记呢。 还有就是这种场景用户先看到列表,然后通过列表的“详情”功能再看详情,这个在列表环节已经根据当前登录用户做过滤了,而现在还要在详情功能做过滤,感觉不太合理。 |
|
自己顶!d=====( ̄▽ ̄*)b
|
|
10分 |
你用两个账号,在不同浏览器互相操作对方的数据就会发现还是要校检数据归属的。 |