Repository navigation
Security
English Version | 简体中文
TypeSafe AI Go SDK 专为企业生产级环境设计,在凭据保护、网络传输、报文边界及数据解析方面实施了多层严格防护。
-
请求头脱敏:SDK 自动对
Authorization、Cookie以及包含token或secret的敏感请求头进行识别,并在日志输出时将其值替换为***。 -
凭据隔离:API Key 通过
Authorization: Bearer <key>标头发起认证,绝不会附加在 URL 参数、错误信息或日志事件的主干文本中。
以下核心标头在客户端和调用选项合并后最后注入,调用方无法篡改或篡夺(无论大小写如何书写):
AuthorizationAcceptUser-AgentX-TypeSafe-SDKX-TypeSafe-Runtime
调用方若在请求中传入自定义的 X-TypeSafe-Retry-Count 标头将被自动清洗,防止干扰服务端重试计数统计。
在构造错误信息与日志记录时,所有请求的目标 URL 都会被统一格式化为脱敏后的 "METHOD URL" 形式:
- 自动剔除账号密码(userinfo,如
https://user:pass@host); - 自动移除所有的 Query 查询参数与 Hash 片段。
// https://user:secret@example.test/v1/models?token=xyz 净化为:
// GET https://example.test/v1/models即使调用方意外在 BaseURL 中混入了凭据或 Token,也绝不会泄露至错误日志或 APM 监控系统中。
SDK 内置的 HTTP Client 默认不跟随任何 HTTP 3xx 重定向。
因为自动跟随重定向可能会导致认证标头(Authorization Bearer Token)或 POST 请求体被转发至不受信任的第三方镜像主机。一旦收到 3xx 响应,SDK 将直接作为 *APIError 抛出,由调用方显式决策。
若你的企业架构确实需要经过特定受信任的反向代理重定向,可通过 typesafe.WithHTTPClient 注入自定义的 http.Client 并自行配置 CheckRedirect 策略。
为防止恶意超大响应或格式炸弹耗尽客户端内存,SDK 实施了严格的读写字节上限保护:
| 保护项 | 上限限制 | 保护效果 |
|---|---|---|
| 响应体最大上限 |
16 MB (MaxResponseBodyLimit) |
使用 io.LimitReader 限制读取,超出时立即截断并返回明确错误,防止 OOM。 |
| 单张图片资产上限 |
16 MiB (MaxImageSizeLimit) |
本地文件或字节切片超过 16 MiB 时,NewImage 直接报错拦截。 |
| 请求体最大上限 |
32 MiB (MaxRequestBodyLimit) |
请求体若超出 32 MiB,服务端直接返回 HTTP 413 *PayloadTooLargeError。 |
| 未知错误消息体截断 |
200 字节 (MaxErrorBodyLength) |
对于无法解析为 JSON 的未知错误响应,错误信息最多截取前 200 字节,防止日志爆炸。 |
SDK 默认针对 WithCompression(true)),附带 Content-Encoding: gzip 标头。
这在传输包含大文本 State 或图片资产的多模态请求时,能够节省高达 70% 的网络带宽,显著降低传输时延与因网络丢包导致的失败率。
服务端返回 2xx 成功时,SDK 采用严格解码策略:
- 关键数字字段(如 Noul 概率、Choice 置信度)缺失或格式异常时,SDK 会显式返回
*typesafe.APIResponseValidationError并指出具体字段路径; -
绝不静默补零:SDK 绝不会把缺失的数值反序列化为
0.0,从而避免把系统故障误判为“概率为 0”或“评分最低”,确保关键风控与决策系统的可靠性。
SDK 默认的 Transport:
- 强制要求 TLS 1.2 或更高版本;
- 优先协商 HTTP/2 协议;
- 连接池预设合理的 30 秒拨号超时与 100 连接的空闲复用上限。
- 指南
- Guides