求知识,如何应对controller传ID,ID泄漏的问题

猫神 发布于 2015/09/07 10:36
阅读 212
收藏 0

场景:

    一个管理系统:有管理员和普通角色,每个角色可以创建产品。管理员可以修改任意产品,角色只能修改自己的产品

    修改的controller:http://XX/YY/update,参数:id,?;name,?;price,?.......

    问题来了,因为ID可以篡改,有什么好方法可以不暴露ID,又能做到修改的效果?(ID暴露可能有引起意想不到的麻烦,即使有角色管理权限)


    这种方法是否可行?

    当进入修改页面的时候,controller里面创建一个UUID,然后存入缓存,key为UUID,value为一个类,类记录了相关信息(谁请求的,产品是谁的,产品ID等等),有效期为5分钟,再把UUID返回前台

    当修改提交时候,要求传入UUID,再和缓存的比较,如缓存有,取出缓存的VALUE,再对VALUE和登录人做权限验证,如OK,继续;否则一律当超时或者是恶意捣乱。


   


加载中
1
红星xx
红星xx

oa 传 id 坑定 是不行的 ,比如 ,两个 业务员 , 权限等级 是一样的。 它可以改 id访问 另一个业务员的数据 。

这里最好用 uuid 代替 , 不连续的,难以猜测的 ,

0
随风逐流
随风逐流

1.你们用户量大不,如果放置缓存是否容易挂机

2.考虑用户群体,他们是否有规范的去操作系统,这种安全性的东西一般会放置到外网系统,并且针对的群体比较广泛

3.其实可以在页面放置UUID的值,还有一个值为UUID加密后的值,等提交到后台时加UUID加密与页面拿到的UUID加密值比较看是否相同,注意:加密方式一定要特别一点

0
moyiguke
moyiguke

看说明,我理解就是ID不可被人阅读即可。用RSA对ID加解密应该可以满足需求了。

0
_Mr_Right_
_Mr_Right_
update 方法里面写一个验证 。当前用户 和 ID 的有效性
0
翻
如果是是涉及到人和角色,不应该登陆后session里面就应该有这些信息了吗?,id完全可以通过在seesion里面获取到无需暴露 
0
idreamblue
idreamblue
Blowfish 对称加密,这样对于前后台都方便,而且对于同一个id每次加密的结果都是不一样的。这种场景足矣。
返回顶部
顶部