针对API接口做CC防护策略

针对API接口做CC防护策略

   本章介绍针对API接口做CC防护策略,众所周知,在域名添加到cdn系统里,最难的就是api接口的防护设置,原因在于api接口的域名很多cc策略是无法开启的,一旦开启将会给api接口在客户端与节点之间无法正常通讯.

于是本站针对API接口专门做了一套签名加密防护方案,通过此方案可以有效处理任何CC攻击,并且该防护方案在CDN层面也不会被轻易破解.可有效长时间抵御一切针对API接口的CC攻击行为.如图所示:

image.png



API专用防御说明

1. 签名算法概述

算法类型:ECDSA (secp256k1)
哈希算法:SHA256
输出格式:r(32 bytes) || s(32 bytes) || recid(1 byte),总长度65 bytes

2. 签名流程

  1. 构建消息 msg → hash = SHA256(msg)
  2. 使用私钥签名,得到 (r,s),low-s 规范化
  3. 计算 recid (0 或 1),输出 raw_signature = r||s||recid

3. 示例(javascript)

const ec = new EC('secp256k1')
const key = ec.keyFromPrivate(SIGNKEY, 'hex')
const ts = Math.floor(Date.now() / 1000) // 获取当前时间戳
const content = md5('hello world'); // hello world 可以替换成其他的
const message = `${ts}_${content}_${ts}`; // 签名的原始内容
const hash = CryptoJS.SHA256(message).toString(CryptoJS.enc.Hex)
const signature = key.sign(hash, { canonical: true })
const recid = key.getPublic(true) 
const r = signature.r.toArrayLike(Buffer, 'be', 32)
const s = signature.s.toArrayLike(Buffer, 'be', 32)
// 最终签名结果
const rawSigHex = Buffer.concat([r, s, Buffer.from([recid])]).toString('hex')


现在注册速盾,立享 10+ Tbps 防护与毫秒级加速,欢迎免费注册。
立即体验