从 URL 敏感信息暴露到 $batch,深入理解 SAP Gateway 的 sap:use-batch Annotation 安全机制

发布时间:2026/8/19 10:24:56
从 URL 敏感信息暴露到 $batch,深入理解 SAP Gateway 的 sap:use-batch Annotation 安全机制 在 SAP Gateway 项目里,OData 请求往往看起来很普通。一个 SAP Fiori 或 SAPUI5 应用读取业务数据时,浏览器可能发出类似下面这样的请求。/sap/opu/odata/sap/ZORDER_SRV/OrderSet?$filter=Customer eq '1000001'如果过滤条件只是普通的客户编号,这类 URL 似乎没有太大问题。可一旦$filter、Function Import 参数或者其他 Query Option 里出现身份证件号码、员工编号、账户标识、医疗信息、合同编号,甚至某种业务安全令牌,问题就完全不同了。原因并不在 OData 的查询能力本身,而在 URL 的传播范围。SAP Gateway 官方文档专门为这种情况提供了一条 SAP Annotation,名称就是sap:use-batch。SAP 文档给出的背景非常明确,OData 请求可能在 URL 中携带机密数据,而 URL 可以直接出现在浏览器环境中。如果不希望这些内容继续暴露在 URL 上,可以考虑通过$batch请求发送,并通过sap:use-batch='true'在服务 metadata 中表达这一要求。从 Web 安全角度看,这个问题比地址栏里能不能看到字符串更广。OWASP 对 URL Query String 中敏感信息的风险有非常明确的说明,URL 里的内容可能进入浏览器历史记录、Web Server 日志、反向代理日志以及监控系统。某些场景下,还可能