web 端的数据验证,用户请求不属于自己的信息怎么处理?

J2EE 码拜 10年前 (2015-05-10) 992次浏览 0个评论
有两个表用户表 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 楼 wangxf_8341 的回复:

session中有用户登陆过的信息啊
没有登陆 直接拦截,登陆过了匹配权限

那每个业务点不都要去做这个匹配

1、如果cust1有个订单ord1的详情 或 后期再有个其他的详情功能,这样每次都需要修改这个限制。
2、而且客户详情其实和用户是没有关系的,客户详情只和客户ID有关系(客户和客户详情是两张表),在客户详情这里加这个限制也不是很合适

第一点只是麻烦些,后期加点工作量就行了。
重点是第二点,每个详情加所属用户限制太不合理了,详情只跟它的ID号有关联。

5分
用过滤器,把user1的ID放在session中,把user2的登陆ID和user1在过滤器里比较就行了
这种情况这样解决
1,不要用get请求,增加修改的难度(不能真正解决问题,但能过滤一些不懂html技术的)
2,外键匹配,属于用户的数据肯定有关联的外键,利用外键匹配登陆用户的id,对比是否一致。
引用 7 楼 u014074757 的回复:

这种情况这样解决
1,不要用get请求,增加修改的难度(不能真正解决问题,但能过滤一些不懂html技术的)
2,外键匹配,属于用户的数据肯定有关联的外键,利用外键匹配登陆用户的id,对比是否一致。

不用get请求这个可以,主要现在系统很多都是这样的,要改动的话工作量比较大。

第二点原因跟前几位说明的意思一样,在拦截器或过滤器加判断,这个是可以的,但是这个局限性太大,我每增一个详情功能都要在这个过滤器添加这个业务点的权限,也可以用数据库配置不用改代码,但这个总是要去改代码或加数据配置,万一忘记呢。

还有就是这种场景用户先看到列表,然后通过列表的“详情”功能再看详情,这个在列表环节已经根据当前登录用户做过滤了,而现在还要在详情功能做过滤,感觉不太合理。

自己顶!d=====( ̄▽ ̄*)b
10分
引用 8 楼 dwk126 的回复:
Quote: 引用 7 楼 u014074757 的回复:

这种情况这样解决
1,不要用get请求,增加修改的难度(不能真正解决问题,但能过滤一些不懂html技术的)
2,外键匹配,属于用户的数据肯定有关联的外键,利用外键匹配登陆用户的id,对比是否一致。

不用get请求这个可以,主要现在系统很多都是这样的,要改动的话工作量比较大。

第二点原因跟前几位说明的意思一样,在拦截器或过滤器加判断,这个是可以的,但是这个局限性太大,我每增一个详情功能都要在这个过滤器添加这个业务点的权限,也可以用数据库配置不用改代码,但这个总是要去改代码或加数据配置,万一忘记呢。

还有就是这种场景用户先看到列表,然后通过列表的“详情”功能再看详情,这个在列表环节已经根据当前登录用户做过滤了,而现在还要在详情功能做过滤,感觉不太合理。

你用两个账号,在不同浏览器互相操作对方的数据就会发现还是要校检数据归属的。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明web 端的数据验证,用户请求不属于自己的信息怎么处理?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!