我需要编写动态 DDL 语句,例如 CREATE USER ?。我知道我可以使用 EXECUTE IMMEDIATE 来执行此操作,但到目前为止,我还没有找到在不简单地连接字符串的情况下合并动态参数的方法,这让我很容易受到 SQL 注入的影响。
来自 PostgreSQL 我习惯于能够引用标识符或使用 FORMAT 将标识符安全地放入一个格式化的字符串中,然后可以执行。Oracle(特别是 12c)中有类似的东西吗?如果不是,如何安全地执行这样的动态 SQL?
我需要编写动态 DDL 语句,例如 CREATE USER ?。我知道我可以使用 EXECUTE IMMEDIATE 来执行此操作,但到目前为止,我还没有找到在不简单地连接字符串的情况下合并动态参数的方法,这让我很容易受到 SQL 注入的影响。
来自 PostgreSQL 我习惯于能够引用标识符或使用 FORMAT 将标识符安全地放入一个格式化的字符串中,然后可以执行。Oracle(特别是 12c)中有类似的东西吗?如果不是,如何安全地执行这样的动态 SQL?
DBMS_ASSERT可能是您正在寻找的:
同一页面还链接到一些关于如何避免 SQL 注入的示例。