一、加密算法
1、散列加密(不可逆,md5、sha1、sha256)
1.1 md5 (长度16或32字节)
$str = '203fpidf02lvj!!_@#_!';
$md5_16 = md5($str,true); // 二进制字符
echo $md5_16.'<br>';
$md5_32 = md5($str);
echo $md5_32.PHP_EOL;
结果:
1.2 sha1 (长度40字节)
$str = '203fpid';
$sha1 = sha1($str);
echo $sha1.'<br>';
结果:
1.3 sha256 (长度64)
$str = '203fpidf02lvj!!_@#_!';
$sha256 = hash('sha256',$str);
echo $sha256.'<br>';
结果:
2、对称加密(可逆,RSA、DSA)
2.1 RSA
2.2 DSA
3、非对称加密(可逆,DES、3DES、AES)
3.1 DES
3.2 AES
3.3 3DES
二、接口安全技术
1、token
// 加密 $sign = md5(md5( 用户id + 时间戳 + 随机字符串 + $secretKey)) // secret 保证的算法的安全性 $auth_token = base64_encode(用户id + 时间戳 + 随机字符串 + $sign);
// 解密 通过验证 md5(md5(用户id + 时间戳 + 随机字符串 + $secretKey)) == $sign 验证签名是否正确, 时间戳可以用来验证时效性
2、code实现接口只能访问一次
$code = md5(时间戳 + uniqid() + 随机字符串);存储在redis中,设置有效期(比如5分钟),使用后删除,实现单次访问
3、接口IP限流 (1分钟不能超过10次)
redis设置一个key :接口名+ip => 访问次数 设置有效期1分钟,1分钟后消失,每次ip访问接口,次数+1,如果总次数>10,报出异常
4、JWT
|