且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

api设计 - php 接口 token 数据加密

更新时间:2023-12-03 19:51:40

此问题简单至极,以php举例。
但和session不一样,和cookies有点接近,设计这个是为了解决cookies传值麻烦的问题。


首先在登陆的过程中,用户向服务端提交数据应有
usernamepasswordclient_key
php在服务端拿到这些数据之后,用校验算法获取校验值,如md5
(ps:不加密码是不行的,否则用户修改密码后之前的还是可以快捷登陆,这不坑人吗)
$salt是一个加密key,防止别人猜到加密算法。

$token=md5($username.$password.date('yyyy').date('mm').$client_key.$salt);

计算完成后将$token返回到客户端,作为存储。以后客户端只需要向服务端发送此$token和用户名。

当php收到这个$token就再做一次上面的运算,看是否一致即可快捷判断。


如果需要防止恶意注册和登陆,就需要在客户端对client_key进行加密,然后服务端解密做验证,然而这并没有什么卵用,一切客户端的代码都是不安全的,可以通过反编译,反混淆来分析,然后照样伪造。所以客户端的加密没有意义。
另外,服务器通过ip判断也是一个办法。
然而,从根源上来讲,防止恶意攻击就需要验证手机号才能注册,目前基本上通过此种方法实现。