开发者社区> 问答> 正文

token拷贝到别人电脑上,禁止授权v

目前token存在浏览器localstorage里面,当我把别人的token拷贝到自己电脑上时,可以获取到他的所有权限,后台如何才能防止这种情况呢?

展开
收起
问问小秘 2020-01-09 17:52:53 1474 0
2 条回答
写回答
取消 提交回答
  • 精于基础,广于工具,熟于业务。

    token都给你了。我还能怎么办啊。

    2020-01-09 18:43:01
    赞同 展开评论 打赏
  • 这种问题,只要是基于浏览器来做的,就没有完美解。

    首先你需要考虑的是,你的数据是不是如此敏感?

    如果是,那么有两个案例可以参考:

    网银。大多数网银在登录时都需要安装额外的控件,并配套 UKey 之类的硬件外设使用。浏览器中的 Cookies 仅作为登录态验证,而鉴权是需要 UKey 这种非对称加密证书来确保安全。(你要是说 Cookies + UKey + 密码全都被复制了咋办?这种问题是开发人员需要考虑的吗?报警啊!) 企业支付宝后台 / 微信商户平台。颁发 Token 时会记录访问者 IP,当 IP 发生变化时,Token 作废。此时网页会提示“检测到你的网络环境发生变化,请重新登录”。 上述两个案例,第一种的安全系数最高,但使用门槛也是最高。

    第二种相对简单一些,但有两个致命缺陷:1 是同一子网下的设备对外是共用一个公网 IP 的,单从 IP 并不能完全区分出设备是否一致;2 是这种方式只适用于公网 IP 不会频繁变化的固定设备(比如公司电脑),如果你的接口是提供给移动端的,手机的公网 IP 可是会因接入基站不同而频繁变化的,这种情况下还用 IP 来区分,体验是十分糟糕的(想象一下坐一站公交就得重新登录一次的场景吧)。

    如果你的数据没那么敏感,但又有一些关键操作需要安全系数更高的验证手段,那么可以考虑二次密码或双因子验证机制。

    比如很多支付类 App,其 Token 只能用于访问一些基础接口,一旦需要敏感操作(比如提现、转账),此时需要输入二次密码进行验证。这种设计可以尽可能降低 Token 泄漏的风险。

    还有一些安全策略是从用户行为特征分析去入手。比如携带同一个 Token 的请求(假设以 Token 来标定用户),前一分钟还在河北省内,一分钟后的请求却来自广东了,这种情况大概率是有问题的。

    但这种手段已经脱离了开发本身,而接近是更上游的流量管控问题了,实现起来也比较复杂,需要大数据集来训练。往往是支付宝、微信支付这类业务场景下采用;或是大众点评、知乎这类有强烈反爬虫需求的。

    2020-01-10 10:01:12
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
安全机制与User账户身份验证实战 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载