最近做的项目后台需要验证是不是我们的用户发送的请求。起初,考虑的是使用rsa算法通过公钥、私钥的方法进行加密解密,老师给我讲了另外一种比较简单的算法,却比较实用。
问题场景
前台需要向后台发送http请求,参数是编号
,并根据编号获取相应的信息。那么后台如何辨别这个请求是不是我们的用户发送的呢?
方案
将发送http请求的header信息中增加几个参数,增加时间戳
、随机字符串
、加密信息
三个参数,123timestamp: timestamp, //时间戳randomString: randomString, //随机字符串encryptionInfo: encryptionInfo //加密信息
加密信息指的是讲编号、时间戳、随机字符串、特定的字符串通过不可解密的方法加密,如sha1、md5算法,如果一次不放心的多加密几次。实例如下12var encryptionString = timestamp + randomString + 'xiaoming';var encryptionInfo = app.sha1(encryptionString);
后台对接受到的参数以及我们约定好的特定的字符串,按照同样的方法加密,如果加密后生成的字符串和前台发送的加密信息(encryptionInfo)相同,那么我们就认为这个http请求是我们的用户发送的请求。