首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用DBD::Oracle在单个查询中执行多个语句?

是否可以使用DBD::Oracle在单个查询中执行多个语句?
EN

Stack Overflow用户
提问于 2009-06-03 16:04:54
回答 1查看 5.2K关注 0票数 2

我想知道是否可以在一个execute()do()调用中通过Perl DBI使用DBD::Oracle执行多个SQL语句。示例:

代码语言:javascript
复制
# Multiple SQL statements in a single query, separated by a ";"
$sql = 'UPDATE foo SET bar = 123; DELETE FROM foo WHERE baz = 456';

$sth = $dbh->prepare($sql);
$sth->execute;

# ...or...

$dbh->do($sql);

我这么问并不是因为我真的想做这样的事情,而是因为我想通过成功的SQL注入攻击来评估可能的损害。是的,我知道,不管这个问题的答案是什么,使用绑定值和可信输入等在根上仍然必须消除SQL注入的可能性。但是问题仍然存在:是否可以让DBD::Oracle执行多个语句?

作为一个相关的例子,DBD::mysql有一个mysql_multi_statements连接选项,它显式地启用了这个“特性”。我无法摆脱这样的感觉,即有一些类似的、可能是无文档的、晦涩难懂的Oracle选项,可以通过DBD::Oracle以某种方式访问,从而实现同样的功能。

如果有关系,这是:

  • perl 5.8.8
  • DBD::Oracle 1.22
  • Oracle 11g (11.01.0700)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-03 16:11:23

如果SQL注入攻击成功,攻击者就不能简单地重复它并以这种方式运行多个语句吗?

Oracle支持匿名PL/SQL块,这些块可以包含多个语句。

“开始执行立即‘删除表客户’;立即执行‘删除表销售’;结束”

Oracle在这里提供了关于避免SQL注入攻击的免费教程:http://st-curriculum.oracle.com/tutorial/SQLInjection/index.htm

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

https://stackoverflow.com/questions/945584

复制
相关文章

相似问题

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