
1) 【一句话结论】针对360安全产品的API防护,需构建多层次的纵深防御体系,结合负载均衡器限流(网络层)、WAF(应用层)过滤恶意请求、输入验证(业务层)过滤非法参数、签名验证(业务层)确保请求合法性,从网络、应用、业务多维度抵御DDoS、SQL注入、API滥用等攻击。
2) 【原理/概念讲解】
老师讲解:
3) 【对比与适用场景】
| 技术方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 负载均衡器限流 | 负载均衡器通过配置连接数、请求速率等参数,限制请求流量 | 网络层,对IP或用户进行速率限制 | 防御DDoS攻击,控制并发请求 | 需结合业务逻辑,避免误限正常用户 |
| WAF | 部署在应用前,通过规则库过滤恶意请求 | 应用层,基于规则匹配拦截 | 防御SQL注入、XSS、CC攻击等 | 规则需定期更新,避免误报/漏报 |
| 输入验证 | 业务层对输入参数进行校验 | 逻辑层,过滤非法输入 | 防止SQL注入、参数篡改 | 验证需全面,覆盖所有输入点 |
| 签名验证 | 生成请求签名,客户端携带,服务器验证 | 业务层,确保请求完整性和来源 | 防止API滥用、请求伪造 | 签名需包含时间戳,防止重放攻击 |
4) 【示例】
limit_req_zone $binary_remote_addr zone=per_ip:10m rate=1r/s;
server {
listen 80;
location /api/ {
limit_req zone=per_ip burst=5 nodelay;
# 后续路由到后端服务
}
}
(解释:限制每个IP每秒最多1个请求,突发5个,不延迟,防止DDoS时请求堆积)def validate_input(param):
if not isinstance(param, str) or len(param) > 100:
raise ValueError("输入参数非法")
# 防止SQL注入:过滤特殊字符
param = param.replace(';', '').replace('--', '')
return param
POST /api/data HTTP/1.1
Host: api.360.com
Authorization: signature=HMAC-SHA256(123456, "timestamp=1672531200,api_key=abcde,query=example")
服务器验证:
import hmac, hashlib
key = "123456"
expected = hmac.new(key.encode(), b"timestamp=1672531200,api_key=abcde,query=example", hashlib.sha256).hexdigest()
if expected == request.headers['Authorization'].split('=')[1]:
# 验证通过
5) 【面试口播版答案】
“针对360安全产品的API防护,需构建多维度防御体系。首先,负载均衡器限流,通过配置请求速率限制(如每秒1个请求),防止DDoS攻击时流量淹没服务器;其次,WAF部署在应用前,通过规则库拦截SQL注入、XSS等恶意请求;然后,业务层输入验证,对用户输入参数进行类型和格式校验,过滤非法输入;最后,签名验证,为请求生成基于时间戳、密钥的签名,客户端携带,服务器验证,确保请求完整性和来源合法性。这些措施从网络、应用、业务层协同,有效抵御DDoS、SQL注入、API滥用。”
6) 【追问清单】
7) 【常见坑/雷区】