APP专用防CC功能说明

一、功能描述

由于APP和API的请求特点,在服务器端会看到大量高并发的相似特征请求,如浏览器特征User-Agent一致,客户端操作系统特征一致、请求URL高度相似(同一URL接口,不同URL参数)等,而Web防CC在进行监测时,往往会根据上述特征来进行判断,导致出现部分正常访问被误拦截的情况,另外,CC攻击也有可能会伪造为APP请求,令大家防不胜防。为解决以上问题,知道创宇提供APP专用防CC策略,可通过获取的密钥对消息进行签名,由服务端验证通过后再予以放行。

二、功能配置

配置入口:https://defense.yunaq.com/kdb_manage/manage/

开启APP防CC功能,并将云防御生成的密钥部署到APP中后,APP会使用密钥对请求进行签名。云防御服务器在收到访问受保护URL的请求时,使用同样的密钥对签名进行校验,并对没通过校验的请求进行拦截。

操作步骤:

1.点击【状态】开关,开启该功能(如未设置需防护的URL,该功能暂不生效)。

2.点击右侧【密钥设置】-【修改】进行密钥设置。

3.修改APP程序,将密钥部署到APP中。

4.点击【URL设置】-【新增】配置生效范围,填写格式如/api/test/。

 

 

注意事项:

1.对于外部跳转(或重定向)的请求,客户端需要在跳转请求中重新计算鉴权信息,否则会导致跳转请求鉴权失败。

2.URL为必填项,如未设置需防护的URL,该功能暂不生效。

三、签名并请求示例(python)

信息 含义 样例
ALGO 签名算法,md5,sha1中的一种,客户端可以选择 md5
AUTH_TOKEN 在云安全系统中设置的TOKEN B20kf4CyqY4k1yK0
EXP_TIME 该请求在此时间后无效,为unix时间戳,比如可以设置为“当前时间+60s”作为过期时间 1487141223
NONCE 随机字符串,建议8-16位字符串 5TKyYRvpDxc
URL 请求的完整url https://www.test.com:8443/api/?id=123

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

import hashlib

 

import requests

 

ALGO       = ‘md5’                                    # 签名算法,支持md5和sha1

AUTH_TOKEN = ‘B20kf4CyqY4k1yK0’                       # 开启功能时生成的TOKEN

EXP_TIME   = ‘1487141223’                             # 过期时间,为unix时间戳

NONCE      = ‘5TKyYRvpDxc’                            # 随机字符串,建议8到16位

URL        = ‘https://www.test.com:8443/api/?id= 123′             # 请求的完整url

API_AUTH   = ‘X-JSL-API-AUTH’                         # 请求头中验证信息的头域名

 

 

m = {‘md5’: hashlib.md5, ‘sha1’: hashlib.sha1}[ALGO]()

m.update(‘|’.join([ALGO, AUTH_TOKEN, EXP_TIME, NONCE, URL]))

signature = m.hexdigest()

api_auth = ‘|’.join([ALGO, EXP_TIME, NONCE, signature])

print api_auth  # md5|1487141223|5TKyYRvpDxc|9def22973f00081700f44fce9bfd7d3b

 

 

response = requests.get(URL, headers={API_AUTH: api_auth})

 

APP防CC最佳实践可参考:http://help.yunaq.com/faq/3940/index.html

APP防CC拦截效果说明可参考:http://help.yunaq.com/faq/3948/index.html