Java后台接口加密

先声明本人是Java初学者,仅写自己感悟,不专业处,仅供参考。

最近在弄Java后台接口加密,公司之前的后台接口加密方式是,用户在登录接口成功后,生成一个userToken,还有一个userTokenExpire也就是userToken过期时间,把这两个字段更新存入数据库对应user表,然后把userId和userToken这两个字段返给客户端保存,后面在每个需要验证的接口,客户端都传给服务器userId和一个apiToken,期中apiToken的生成规则是,当前时间年月日+接口Url+userToken进行两次MD5加密,客户端在收到请求后根据userId去user数据库去查用户信息,查不到返回uerId错误,查到再判断userTokenExpire是否过期,如果过期,直接返回,并提示客户端身份信息过期,请重新登录,userTokenExpire没有过期情况下从数据库user表里取出userToken,用和客户端同样的方式即当前时间年月日+接口Url+userToken进行两次MD5加密生成apiToken,进行比较,相同则验证通过继续执行接口逻辑,不相同直接返回,提示客户端apiToken错误。

这两天又接触了JWT,Json Web Token认证技术该技术比较成熟,感兴趣的可以自行百度,大致分为头部,荷载(可以存一些不重要的信息),签证这三部分,请求头一般放加密方式,荷载这里面信息可以存放签发时间,过期时间,等,签证是用前面两部分内容再结合secret服务器私钥检验,用来检验整个信息是否合法,是否是该服务器发出的。然后将这三者分别Base64加密用逗号隔开生存token在登陆时传给客户端,后面在需要验证的接口请求头部,客户端再传给服务器验证。

总结第二种方式和第一种方式比较,第二种方式不需要第一种方式那样专门在数据库存一个userTokenExpire用来记录token过期时间,直接在荷载里记录,且第二种方式在每个接口不用去查询数据库user表,减少数据库操作。且第一种apiToken生成的方式看似很安全,但是客户端源代码很容易暴露,一旦暴露作用也不大。

不管咋样,如果在登录接口就不安全,token就暴露了,啥都白搭,但用JWT技术用比“裸奔”强,后面为了进一步安全所有请求都用Https即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,012评论 3 119
  • 弘丹参考的是钱穆的《论语新解》以及傅佩荣的《人能弘道-傅佩荣谈论语》,绿窗幽梦参考的是朱熹的《四书章句集注》,由弘...
    弘丹阅读 788评论 2 4
  • 导读:因信息不对称、价格不透明等现象存在,长期以来传统中介行业饱受诟病。在当下互联网时代,似乎人人都在通过去中介化...
    Anty阅读 1,819评论 0 5
  • 就让大海带走我的矮丑 三月份,社团举办了一个旅游线路设计大赛,现在已经到决赛阶段。从开始的策划到决赛的布置,我们几...
    阿钵阅读 464评论 0 1