ストアドプロシージャがデータベースの注入を妨げるのは本当ですか?少し調べたところ、SQL-Server、Oracle、およびMySQLは、ストアドプロシージャのみを使用する場合、SQLインジェクションに対して安全ではないことがわかりました。ただし、この問題はPostgreSQLには存在しません。 PostgreSQLのコアにストアドプロシージャを実装すると、SQLインジェクションができなくなりますか、それとも他の理由/違いがありますか?ストアドプロシージャのみを使用する場合、PostgreSQLでSQLインジェクションを使用できますか?
つまり、ストアドプロシージャはSQLインジェクションを妨げません。ストアドプロシージャ内で動的SQLを処理する方法によって異なります。
より完全な回答については、ここに投稿されている内容を確認してください: https://stackoverflow.com/questions/627918/am-i-safe-against-sql-injection
これらのリンクを確認すると、画像がより鮮明になります。
http://anubhavg.wordpress.com/2008/02/01/are-stored-procedures-safe-against-sql-injection/
http://www.sqlmag.com/article/sql-server/protecting-against-sql-injection.aspx
"... SQLインジェクションを回避するための対策
[〜#〜] if [〜#〜]使用SP正しく、あなたはかなりSQLインジェクションから安全です(もちろん、当然ながら適切な入力検証を行うことが前提です)[〜#〜] if [〜#〜]。
ああ、でも、SPを正しく使用するとはどういう意味ですか?
よく見られるSPの最も一般的な誤用の2つであり、それぞれがSQLインジェクションにつながる可能性がありますが、ストアドプロシージャ、は:
クエリがストアドプロシージャであるかどうかに関係なく、名前付きパラメーターと共に変数バインディングが必要です。また、次のような特定のSQLステートメントについても考慮する必要があります:LIKE