1

ロールを定義し、データベースに接続して特定のストアド プロシージャを実行するだけでロールを付与しました。このロールを持つユーザーは、このクエリを実行するときにプロシージャの本体を表示できます。

select * from  ALL_SOURCE where NAME = 'procedureName';

プロシージャーは VARCHAR2 パラメーターを取り、それを選択照会で使用します。それはセキュリティの問題ですか?どうにかして非表示にするか、パラメーターをエスケープする必要がありますか?

4

1 に答える 1

2

一般に、プロシージャーが SQL インジェクションの影響を受ける場合にのみ、セキュリティの問題になります。パラメータのエスケープについて話しているという事実は、動的 SQL を実行している可能性があり、SQL インジェクション攻撃に対して脆弱である可能性があることを意味します。その場合は、ソースを隠すのではなく、手順を修正する必要があります。

ストアド プロシージャが独自仕様と見なすビジネス ロジックを実装している場合、データ ディクショナリで難読化されるようにコードをラップする可能性があります。ただし、これを行う場合は、ソース コードをソース管理で確実に管理してください。これは、一度ラップしたコードをアンラップする方法がないためです (厳密に言えば、攻撃者がほとんどのコードを復元するために使用できるさまざまな手法があります)。必要に応じてソースをラップしますが、かなり安全です)。

于 2012-04-04T22:51:27.187 に答える