由于手机APP或者类APP 产品是无状态请求,如果攻击者通过抓包或者反编译掌握了APP接口地址或者接口格式,就可以进行DDos或者CC攻击。对于这类攻击,最大的难题在于如何识别真实的用户。为了解决类似问题,速度网络高防IP产品推出APP_TOKEN功能,可以实现针对APP或者小程序100%拦截DDOS和CC攻
实现原理
- APP 每次启动后,第一条请求 务必是向高防IP的校验地址发送一条请求,并 同步等待 返回结果,如果校验通过,则会将客户端IP放入白名单,并将请求回源,APP正常启动后,不用再次请求。
- 如果校验不通过,则返回403状态.表明该IP为恶意IP,不再回源。
- 如用户端更换IP,则需要重新发送验签请求。
接入准备
- APP产品: 需要在APP产品的每次启动过程中增加一个请求,请求地址为:
域名/app_token.ys?sign=AAA
(AAA为具体的sign) - 开启高防IP的APP_Token功能。
APP_Token功能操作流程
- 在”网站防护” 下某个域名的 “设置”,选择开启 通讯加密 功能
- 开启后,会在 “高防IP”->详细 中生成APP_TOKEN
- APP 发送请求,如果校验成功则返回true,失败返回403
APP_TOKEN的例外链接设置
- APP_TOKEN 开启后,当有客户端请求时,必须先进行验签,通过后才能继续发送其他请求,否则就会被拦截。当用户端更换IP时,也需要进行再次验签。
- 但是对于某些链接url,如不希望受到上述规则的影响,则可以设置了APP_TOKEN的例外链接。在例外连接中的URI,不会受到APP_TOKEN规则影响。
- 强烈建议,该功能需谨慎使用,如发现例外链接中的URI 被CC攻击,请尽快进行移除。
- 设置方式和uri格式要求。
- 是URI而非带参数的URL,参数默认会被忽略。
签名规则和请求地址
- 请求地址:域名/app_token.ys?sign=AAA(AAA为具体的sign)
- sign规则:md5(日期+APP_TOKEN).日期格式为Y-m-d(如2020-12-07).
以下是使用PHP编写的签名规则和请求地址的实战代码:
<?php
// 定义APP_TOKEN
define('APP_TOKEN', 'your_app_token');
// 获取当前日期
$date = date('Y-m-d');
// 根据签名规则生成签名
function generateSign($date, $appToken) {
$signData = $date . APP_TOKEN;
$sign = md5($signData);
return $sign;
}
// 生成请求地址
function generateRequestUrl($sign) {
$requestUrl = "http://example.com/app_token.ys?sign=" . $sign;
return $requestUrl;
}
// 生成请求地址并输出
$sign = generateSign($date, APP_TOKEN);
$requestUrl = generateRequestUrl($sign);
echo $requestUrl;
?>
请确保将 ‘your_app_token’ 替换为您自己的APP_TOKEN,并将 ‘http://example.com/app_token.ys’ 替换为您实际的请求域名。这段代码将根据给定的日期和APP_TOKEN生成签名,然后将其用于构建请求地址并输出。
App小程序操作流程:
在 App.json 文件中设置 APP_Token。具体步骤如下:
- 打开小程序的项目目录。
- 找到并打开 App.json 文件。
- 在文件内找到 “page” 字段,配置小程序页面路径。
- 在 “window” 字段下添加 “app_token” 项目,并设置其值为你的 APP_Token。
完成以上步骤后,保存并关闭 App.json 文件。