首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PL/SQL中防止SQL注入

如何在PL/SQL中防止SQL注入
EN

Stack Overflow用户
提问于 2020-10-26 02:08:48
回答 1查看 323关注 0票数 1

我们有几个包需要解决一些SQL注入问题。我需要一些帮助来重写sql语句或清理输入。下面是veracode抛出错误的行号。

open c_ccl (p_part_nr,p_ctry_cd);

//源代码

代码语言:javascript
复制
     CREATE OR REPLACE EDITIONABLE PACKAGE BODY "schema"."Test_PKG" AS

  v_data t_cla_class_data;

  FUNCTION nat_eccn_cd( p_part_nr  IN    t_part_nr, p_ctry_cd    IN     t_ctry_cd         )            
  RETURN t_us_eccn_cd IS
  CURSOR c_ccl(p_part_nr CHAR, p_ctry_cd CHAR)  IS
  SELECT NAT_CCL_CD  FROM CLSDBA.CLA_EXP_PART_CTRY e
     WHERE  e.PART_NR = p_part_nr  AND e.CTRY_CD = p_ctry_cd
      ORDER BY e.VAL_FROM_DT DESC;
  v_ctry_cd char(4) := p_ctry_cd;
  v_trf_cd char(4);
  BEGIN
    v_data.nat_eccn_cd := NULL;
    open c_ccl (p_part_nr,p_ctry_cd);
    fetch c_ccl INTO v_data.nat_eccn_cd;
    close c_ccl;
    return (trim(v_data.nat_eccn_cd));
    exception when others then return NULL;
  end;
EN

回答 1

Stack Overflow用户

发布于 2020-10-26 03:03:59

我没有看到您的代码中有任何SQL注入问题-没有动态代码可以计算用户输入并退出预期的代码流。除非您的代码片段是在其他地方生成的,或者其中一个列名实际上是一个调用动态SQL的函数,否则您的代码看起来是安全的。

您使用了“清理输入”这一短语,这对数据库编程来说是一个糟糕的建议。尽管我很喜欢连环画XKCD,但兰德尔在这一点上错了。

绑定变量是避免SQL注入的最佳解决方案。我将利用这个机会(糟糕地)改变他的漫画:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64527085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档