php 简单token签权验证

来源:互联网 发布:java键盘 上下左右监听 编辑:程序博客网 时间:2024/06/04 20:07

php 简单token验证


在API开发过程会经常使用token来完成请求签权,以防止api接口被恶意调用。
这里演示简单的token签权,可利用时间戳来控制token过期时间。

参数说明

请求地址:domain.com/api.php?token=xxx&time=xxx&str=xxx&data=xxx
请求方式:get

参数 必填 说明 key – 秘钥,参与加密盐 token 是 token 字符串 time 是 时间戳,参与加密生成token data 否 提交的其他参数

生成一个请求url

<?php$key = 'key'; //秘钥 ,非常重要,不参与url传输、秘钥泄露将导致token验证失效$data['time'] = time();$data['data'] = 'data';$data['token']= md5( md5($key) . md5($data['time']) );// 拼接url$url = 'domain.com/api.php?' . http_build_query($data);

服务器端验证token

<?php$param = $_GET;// 验证时间戳if (!isset($param['time']) || intval($param['time']) <= 1) {    exit('时间戳不正确');}// 设置每个token的过期时间为60秒if (time() - intval($param['time']) > 60) {    exit('请求超时');}// 验证tokenif (!isset($param['token']) || empty($param['token']) ) {    exit('token不能为空');}// 服務器端生成token$key = 'key'; //秘钥$time = time();$server_token= md5( md5($key) . md5($param['time']) );;if ($server_token !== $param['token']) {    exit('token错误');}echo '验证通过';// 其他业务逻辑// ...
原创粉丝点击