最基本的安全验证
REST API架构越来越多的被使用。
当你设计了一个POST方法的API时,该API暴露出来后可能被人找到,并进行恶意数据的提交。
怎么解决这个被恶意提交的问题呢?首先想到的是可以要求客户在提交参数时,将验证信息加上如:用户名、密码。就像下面的数据结构一样用户每次提交数据都加上KID(相当于用户名)和Passwd:
{"data":"123", "kid":"12222", "passwd":"asdfasde2211"}
被抓包怎么办?
按照上面的方法数据如果被抓包后,所data的数据进行修改后再提交,这样服务器端根据不本知道数据被修改了。如果你设计的是一套金融系统,这个data
可能是RMB….
加入签名
解决数据被修改的方法,就是将参数data
与KID
、passwd
以及一个密钥
计算其MD5值,将计算出的MD5值也加到参数中,这样上述的参数结构会变成
{"data":"123", "kid":"12222", "passwd":"asdfasde2211","sign":"2adw34w21ds88fjeesd"}
服务器端在接收请求后,将data
、kid
、passwd
与客户端做同样的加密算法,并将结果与sing
进行对比。
有签名后API的风险
加签名的风险如下:
* 加密码算法及密钥同时被破解;
如何使用API更安全
想让API更安全,需要将加密算法设计更加复杂一些。
* 密钥设计的复杂一些;
* 使用多次字符串加密;
* 截取加密后字符串的某几位;