HTTPDNS解析接口加密验证机制
时间 : 2017-10-11编辑 : DNS智能解析专家
1. 背景
为了避免 CC攻击或其他人乱用HTTPDNS查询接口,设计了HTTPDNS接口加密验证机制。
2.1 使用方案
· 为避免加密验证带来的额外接入成本,用户可暂时关闭加密授权机制
· 如果需要加密码接口功能,请可开启加密验证机制,并获得相应的加密secretkey。
2.2 加密验证开关的管理
· 关闭时,可能会引入安全隐患。
· 只有开启 加密验证机制开关 时,才能避免被攻击导致的不必要费用。
3. 签名生成和验证机制
3.1 签名生成算法及示例
HTTPDNS接口地址
· http://14.152.80.144:5353/d
考虑到服务IP防攻击之类的安全风险,为保障服务可用性,HTTPDNS同时提供多个服务IP,当某个服务IP在异常情况下不可用时,可以使用其它服务IP进行重试
签名算法
s = md5(www.dns.com@1502881493@secretkey)
签名字段说明
字段 | 描述 |
h | 需要被解析的host,与URL中的host参数取同样的值 |
s | 由服务器负责生成,查看方式:『控制台-验证配置-验证secretkey』 |
t | 请求时间,1970年1月1日以来的秒数(整形正数,固定长度10)。 |
c | clientip 查询IP |
签名示例
· 示例(HTTPDNS API接口):
· 原请求:http://14.152.80.144:5353/d?h=www.dns.com&t=1502881493&c=12.12.1.1
· 假设秘钥为:IAmASecret,当前请求为时间2018-08-15 15:00:00 (时间戳1502881493)
· sign = md5(“www.dns.com@1502881493@IAmASecret”) = 60c71e98b6d7fcbb366243e224eab457
· 鉴权请求:http://14.152.80.144:5353/d?
h=www.dns.com&t=1502881493&c= 12.12.1.1&s=60c71e98b6d7fcbb366243e224eab457
此方案优缺点
· 客户端时间不同
· 秘钥放在客户端丢失有风险
· 无需去服务器拉取
3.2 鉴权响应
· 鉴权成功时,HTTP响应的状态码为200,响应结果同原HTTPDNS响应
· 鉴权失败时, TIMEOUT(建议客户将client超时时间设置为2秒)