关于网友提出的“ 防止其他人通过用户的url访问用户私人数据”问题疑问,本网通过在网上对“ 防止其他人通过用户的url访问用户私人数据”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 防止其他人通过用户的url访问用户私人数据
描述:1,数据是用户私人的,只能被用户自己查看,如果防止其他人通过url访问数据?
2,访问都需要登陆操作,session中放入userId, 记录中放入userId,每次访问的时候根据url中记录id 得到数据,根据数据中的userId 和session中的userId 是否匹配判断是否是用户本人访问??
但是这样就会导致需要查询数据库之后才可以得知结果
3,url中放入userId,根据url中的usrId和session中保存的userId 进行匹配判断是否是本人访问,
这样会将userId暴漏在url中
各位都是怎么做的
解决方案1:方法1.使用session,如果seesion直接throw
方法2.生成token,存在redis或者其它缓存机制,同是你也可以存放一些,比如uid,权限,请求限制
解决方案2:1、userid不要放到url中
2、采用token,jwt加时间戳,放到每次请求的header中
解决方案3:一个url就能访问到别人的私人数据,只能说明你做的东西太那个啥了。你看看别人都是咋开发的,同样的URL只可以访问已登录用户自己的数据。对于保密的数据不仅不能让其他人随意的通过URL访问,还得防止爬虫抓取。河南农业大学的系统就存在类似的漏洞,所以既然是隐私数据,那么保密工作不仅仅是一个URL的事儿,服务器配置各方面都有。就像上述河南农业大学的学生私人信息其实就是服务器配置不当,那么后台系统层面该做的就是授权与鉴权。所以虽然URL一样,但只有授权过的用户才能让他看
解决方案4:私人数据的ID如果不和用户ID做关联,其他用户在被授权了的情况下,就有可能通过枚举数据ID的方式,访问到别的用户的私人数据,个人感觉只要查询的时候多拿出用户ID,然后在程序中比对下,也还好吧
解决方案5:url做成通用的,数据请求需要用户自己主动触发
解决方案6:用户登录成功后保存相关数据到session,从session里取出用户的ID,每次查询条件都加上该id。
解决方案7:目前,多数的解决方案是token session设置时间限制!
解决方案8:我明白你的意思,我的想法是这样的。
每次用户用自己的 url 访问服务器去拿数据,服务器会用一种算法算出一个种子,然后发送给用户登陆时所用的浏览器的缓存中,当然有时间限制。只是这个种子必须要存在数据库中
解决方案9:每个页面肯定会有请求,请求时候会带上用户信息,用户登录后才会有用户信息。所以只要判断是否可以拿得到用户信息就知道既可以了,拿不到用户信息就让用户去登陆就好了!
解决方案10:订单变中肯定要存用户 id,查询的时候根据订单id和用户id来查询,订单id可暴露,用户id通过session过去,不要直接暴露给用户。
解决方案11:既然是私人数据,那就不需要在路由中体现 userId,登录之后,一切数据依据SESSION中的userId去查询,怎么可能会出现访问到其它用户的数据呢
以上介绍了“ 防止其他人通过用户的url访问用户私人数据”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4536101.html