execute()
1つのSQLステートメント内で複数のSQLステートメントを実行できるかどうか、またはPerlを介してdo()
呼び出しを実行できるかどうかを知りたいです。例:DBD::Oracle
DBI
# 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 OCIオプションがあり、それを介して何らかの方法でアクセスDBD::Oracle
できると、同じことが可能になるという気持ちを揺るがすことはできません。
重要な場合、これは次のとおりです。
perl
5.8.8DBD::Oracle
1.22- Oracle 11g(11.01.0700)