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'进行匹配。
问题
- 这段代码是否存在SQL注入风险?若存在,最佳缓解方式是什么?
- PL/SQL中的参数化变量在防注入方面是否与绑定变量表现类似?若是,能否提供可展示给安全团队的官方文档链接?我正在查找PL/SQL文档但尚未找到,可能是关键词不正确。
内容的提问来源于stack exchange,提问作者McRivers
相关产品推荐
相关产品推荐

