| 常见入口 | URL 抓取、图片处理、Webhook 回调、PDF 生成、远程导入 |
|---|---|
| 危害 | 内网探测、云元数据读取、内部服务调用 |
| 防护 | 目标白名单 + 解析 IP 校验 + 禁止跟随重定向 + 出站网络限制 |
校验要点(Python 示意)
校验要点(Python 示意)
import ipaddress, socket
from urllib.parse import urlparse
def is_allowed(url, allow_hosts):
u = urlparse(url)
if u.scheme not in ('http', 'https'):
return False
if u.hostname not in allow_hosts:
return False
ip = ipaddress.ip_address(socket.gethostbyname(u.hostname))
return not (ip.is_private or ip.is_loopback or ip.is_link_local)先解析再校验、校验后固定使用该 IP 连接,可缓解解析与使用之间的重绑定问题;出站网络层再限制可访问网段与端口。