解决思路:防止其他人通过用户的url访问用户私人数据
思路一:url中放入userId,根据url中的usrId和session中保存的userId 进行匹配判断是否是本人访问,
这样会将userId暴漏在url中,不安全。解决方案:url做成通用的,数据请求需要用户自己主动触发(百度的)(不建议使用)
思路二:访问都需要登陆操作,session中放入userId, 记录中放入userId,每次访问的时候根据url中记录id 得到数据,根据数据中的userId 和session中的userId 是否匹配判断是否是用户本人访问?但是这样就会导致需要查询数据库之后才可以得知结果,解决方案:redis替数据库做用户验证。
思路三:用户访问订单的请求地址时带一个token,采用token,jwt加时间戳,放到每次请求的header中,拿到token进行校验,判断是否为该用户自己的账户,如果是则进行请求,如果不是则提示,转请求错误的页面。(这个需要前端在用户点击发请求时将token带上)
思路四:后台系统层面做一个授权与鉴权。所以虽然URL一样,但只有登陆授权过的用户才能让他看指定的数据。
思路五:在路由地方增加一个中间件,把需要验证的路由全部走这个中间件。每次用户登录的时候生成一个比较长的hash码(保证每个用户不重复) session 保存这个 hash。每次请求的时候验证这个 hash 就好了。每次登录都不同,不纯在泄漏问题。(和思路三类似,而且还多一个路由中间件)
思路六:拿浏览器的Cookie和缓存中用户id的数据对比
更多请见:http://www.mark-to-win.com/tutorial/51263.html