You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 19c PL/SQL代码是否存SQL注入风险?参数化变量与绑定变量异同

PL/SQL SQL注入防护疑问

我已在StackOverflow搜索并查阅了一些关于PL/SQL SQL注入防护的类似帖子,但均未匹配我的具体问题。这篇帖子提到了绑定变量,但未涉及参数化变量,二者处理方式是否相同?

我们对代码库进行了安全扫描,以下代码被标记为潜在SQL注入风险。我原本认为使用参数化查询时,Oracle会将其视为与绑定变量类似的处理方式,这是编写查询的安全方式。

function get_school_id (
  p_username  varchar2
) return number is
    
  l_school_id  number;
    
begin
    
  select school_id
    into l_school_id
    from tbl_schools
   where username = p_username;
    
  return l_school_id;
    
end;

我的假设是,即便有人调用此函数时传入:

p_username => '; delete from tbl_schools;'

也只会返回无结果,因为Oracle会将该字符串作为tbl_schools表中的'username'进行匹配。

问题

  1. 这段代码是否存在SQL注入风险?若存在,最佳缓解方式是什么?
  2. PL/SQL中的参数化变量在防注入方面是否与绑定变量表现类似?若是,能否提供可展示给安全团队的官方文档链接?我正在查找PL/SQL文档但尚未找到,可能是关键词不正确。

内容的提问来源于stack exchange,提问作者McRivers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:42:09