在很多 ABAP 项目里,只要一提到性能优化、跨库兼容性不足、或者需要用到数据库特性(例如某些 HANA 专属语法、复杂的动态查询拼装),不少同学就会想到 ADBC(ABAP Database Connectivity)。ADBC 的确很强:你把 SQL 语句当作字符串交给 CL_SQL_STATEMENT / CL_SQL_PREPARED_STATEMENT 这类对象,它们再把语句原样交给数据库执行。也正因为这个 原样交给数据库 的特性,一旦 SQL 字符串里混入了来自程序外部的内容(用户输入、HTTP 参数、OData filter、文件内容、RFC 入参等),就会立刻落入 SQL injection 的经典攻击面:攻击者不是在 输入数据,而是在 输入指令。
这篇文章会从 ABAP 体系(On-Premise、S/4HANA private cloud、S/4HANA public cloud、SAP BTP 上的 ABAP environment)常见的工程实践出发,讲清楚 ADBC 场景下 SQL injection 为什么更容易发生、怎么


