EventSource API不支持在请求头中设置自定义字段(如Authorization: Bearer <token>),因此SSE 端点的认证通常通过以下方式实现:将认证Token作为URL Query参数传递(需注意URL可能被记录在访问日志中,应使用短有效期的一次性Token);或依赖Cookie-Based认证(浏览器会自动在请求中附带Cookie)。更安全的方案是:客户端先通过普通HTTP POST接口获取一个短期有效的SSE专用Token,再将该Token作为Query 参数传入SSE端点URL。
SSE 传输的内容应通过HTTPS加密,防止中间人攻击窃听推送内容或注入恶意消息。具体做法是将SSE端点部署为HTTPS地址(而非HTTP),确保整条数据链路处于TLS加密保护之下。特别是在公共Wi-Fi环境下,未加密的SSE连接存在较大安全风险。腾讯云CLB和API网关均支持一键开启HTTPS监听,配合SSL证书可快速实现SSE传输加密。
SSE 长连接会持续占用服务器资源,恶意客户端可创建大量SSE连接消耗服务器TCP端口和内存资源,造成拒绝服务(DoS)攻击。防护措施包括:在网关层(如腾讯云WAF)限制单IP可建立的并发SSE连接数;要求SSE连接建立前必须通过身份认证,仅允许已登录用户建立SSE连接;设置每个用户的最大SSE连接数(通常为1-3个)。
当使用URL Query参数传递认证Token时,Token可能出现在浏览器地址栏、服务器访问日志、Referer请求头等位置,存在泄露风险。防护措施包括:使用短期有效的单次Token(Token被使用后即失效);在Token中嵌入客户端IP、User-Agent等指纹信息,服务端验证Token时核对指纹;使用腾讯云WAF等Web应用防火墙识别和拦截异常的SSE连接请求模式。