小编Dev*_*ers的帖子

如何在 Oracle SQLPlus 中防止 SQL 注入?

显然,如果我使用 JDBC/ODBC,我可以使用绑定变量和预准备语句来防止 SQL 注入。但是,当数据传递到最终调用 Oracle SQLPlus 的批处理过程时,是否有办法防止 SQL 注入?例如:

查询.sql:

select '&1' from dual;
exit;
Run Code Online (Sandbox Code Playgroud)

如果我这样从 SQLPlus 调用这个脚本:

$ sqlplus SCOTT/TIGER @query.sql "x','y"
Run Code Online (Sandbox Code Playgroud)

我将得到以下输出:

old   1: select '&1' from dual
new   1: select 'x','y' from dual

' '
- -
x y
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,SQLPlus 命令行参数使用简单的宏替换。我缺少替代方法吗?否则,我如何防止它被利用?

sql oracle sql-injection sqlplus batch-file

1
推荐指数
1
解决办法
3655
查看次数

标签 统计

batch-file ×1

oracle ×1

sql ×1

sql-injection ×1

sqlplus ×1