开发者社区> 问答> 正文

有什么好的防止请求数据的篡改方案吗

  1. 有什么好的防止请求数据的篡改方案吗?目前公司项目进行重构,我主动要了数据防篡改这一块功能的设计。目前遇到了一些小问题。 防止消息篡改,发送请求的时候需要加上sign、timestamp、nonce、token。 sign主要是通过timestamp+nonce+参数加密生成的,参数需要按照字母排序,a=xx,b=xx,c=xx。而nonce是一个随机字符串,它的生成方式是通过timestamp+random(n, n)。 nonce因为是随机生成的,所以每次的nonce都不一样,nonce也可以作为防止重复请求的一个参数。把nonce存在redis里面,如果redis里面有这个nonce,就说明已经请求过一次了,timestamp可以作为nonce存在redis里面的有效期。 timestamp的作用是用来作为请求的有效时间,一般设置为60s足够了,超过这个时间请求则失效。 这个加密需要双向验证,client->server验证请求,servet->client验证响应,来确保请求和响应的没有问题。 现在有几个问题: 1. 加密方式目前还不知道采用什么 2. 前端该如何存储加密的密钥不会被发现。我想要这么设计,不知道可行吗?或者是说还有更好的解决方案。
  2. 密钥怎么要怎么保存,才不会被发现呢?前端是不是可以将密钥存在nodejs里面?

展开
收起
景凌凯 2020-04-24 16:43:00 1459 0
1 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!
    • 通道上做保护,https。其他的数据加密什么的,个人认为还要看业务;密钥保存在各自的服务器中,要的时候下发下去;前端做加密等级很高的方案,没有太大的意义。简单的https+sign就差不多了。sign需要的保护数据可以用so文件保护。
    • HTTPS+MD5签名+时间戳防止重放攻击;密钥放在代码里,或者文件里都可以啊。ZK之类的存储都可以。
    • 前端的任何加密都是徒劳(前端谁都可以改,一个页面,你的代码全都是暴露出去的),因为js,html是很好获得的。就算md5加密了,就算不能解密,也可以根据构造方式伪造
    2020-04-24 16:43:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
微信客户端怎样应对弱网络 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载