前后端分离 api安全设计

最近打算做个商城项目(个人学习练手),想采用前后端分离的方式来实现,但是api认证这块经验不足。网上看过jwt有关的帖子,但是一直不明白。

1.jwt相比随机生成一个字符串(也是有时限的)有什么优势?第一部分header内容居然包含了加密的算法,这不是更加不安全么?

2.jwt应该是登陆后生成的一个token, 但是在不登录的情况下,部分接口也是可以请求的啊,比如商品展示之类。那基础的api认证应该怎么做呢?

阅读 7.7k
5 个回答

1、如果随机生成的字符串也能满足你的要求,那也是可以的,jwt 更多的是提供一种规范或者标准,最终的目的都是实现业务需求。对于 header 是否包含加密算法完全是由你来决定的,而且如果你的算法加了盐的话,只知道算法不知道盐值也是没用的。
2、认证完全是后端的事情,需要认证的接口才做token认证,都不需要认证了你还想认证啥?

什么是 JWT -- JSON WEB TOKEN

1.JWT本身是web认证的一种方式,如果随机字符串可以满足你的业务需要那也可以。JWT是一种规范、标准,如何生成这个JWT是可以自己决定的,但根据JWT的定义,JWT并不适合放置敏感信息,JWT的生产是在后端的,后端保留生成用到的秘钥
2.接口的认证是后端自己定义的,后端要维护接口-登录验证关系和接口权限,对免登录的接口不做登录验证就好了

Ps:HTTP是可以模拟的,没有绝对的安全,即时使用JWT或其他验证方式都有被盗用的风险,我们只能提高服务的安全性,比如使用Https、ip校验、user-agent校验、referer校验等。

  1. 加密私钥放你服务器侧,如果没有泄漏有什么不安全
  2. 这个也可以用中间件来处理需要身份信息的api

可以用passport中间件,原理是一样的,只是封装了一下而已

1.jwt加密规则更复杂,你随机生成字符串直接传入客户端,不是直接被获取到了?jwt的header没有加密,只是进行了base64,不会存入敏感信息,本就是透明的
2.需要验证身份信息的API就引入验证信息中间件 或 继承基类嘛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题