最近做的项目后台需要验证是不是我们的用户发送的请求。起初,考虑的是使用rsa算法通过公钥、私钥的方法进行加密解密,老师给我讲了另外一种比较简单的算法,却比较实用。

问题场景

前台需要向后台发送http请求,参数是编号,并根据编号获取相应的信息。那么后台如何辨别这个请求是不是我们的用户发送的呢?

方案

将发送http请求的header信息中增加几个参数,增加时间戳随机字符串加密信息三个参数,

1
2
3
timestamp: timestamp, //时间戳
randomString: randomString, //随机字符串
encryptionInfo: encryptionInfo //加密信息

加密信息指的是讲编号、时间戳、随机字符串、特定的字符串通过不可解密的方法加密,如sha1、md5算法,如果一次不放心的多加密几次。实例如下

1
2
var encryptionString = timestamp + randomString + 'xiaoming';
var encryptionInfo = app.sha1(encryptionString);

后台对接受到的参数以及我们约定好的特定的字符串,按照同样的方法加密,如果加密后生成的字符串和前台发送的加密信息(encryptionInfo)相同,那么我们就认为这个http请求是我们的用户发送的请求。