2011-06-23 6 views
0

私は質問があります。Javaの標準JDBCを使用したSpringフレームワーク

私はこの

"SELECT usernmae FROM users WHERE username='" + usename + '" 

のような標準JDBCでSpringフレームワークを使用したいが、私は準備されたステートメントを使用したいscroll down toパソコンへ転送することを行うことが可能です。これは単なるサンプルクエリです。

+6

標準JDBCは、SQLインジェクションに対して脆弱ではありません。プログラミングが悪いです。春はどちらにも違いはありません。また、 'JdbcTemplate' *は標準のJDBCです。わずかに面白いインターフェースを備えています。 – skaffman

+0

私はプロジェクトを持っており、SpringでJDBCを使用するとSQLインジェクションが可能になることを示したいと思います。それは春と標準jdbc(私はpreparedstatmentを使用せずに、それはサンプルjdbcです)と春とすることが可能です。 – user813056

+0

繰り返し同じ質問をしないでください。この質問はほんの2時間で、もう1時間後に同じことをもう一度聞いてみると、受け入れられるとは考えられません。追加するものがあれば、この質問に追加してください。ありがとう。 – Kev

答えて

1

JDBCは、他のSQL接続メカニズムよりもSQLインジェクションに対して脆弱です。 SQLインジェクションの脆弱性は、コードを書く人の手に渡ります。 JDBCテンプレートは、データベースとの接続を管理する方法を提供し、SQLインジェクションからあなたを保護するとは限りません。あなたは、SQLインジェクションに脆弱なJDBCテンプレートを使用して、厄介なコードを書くことはまだ可能です。

質問の更新を解決するにはそうすることができます。単純なqueryメソッドがJDBCテンプレートにありますが、そうすることでSQLインジェクションが脆弱になります。簡単な答え:は常に準備文を使用します。あなたが安全にそれらを使用することを避けることができる唯一の時間は、あなたがユーザーからできるクエリに入力を含まない場合です。しかし、あなたの前提が間違っているか、それとも道のりが変わった場合であっても、準備された声明を使用するほうがはるかに優れています。常に、常に、常に準備されたステートメントを使用してください。そのたびにSQL文を再コンパイルするのではなく、SQLエンジンがコンパイル済みの文をキャッシュして後で使用できるようにするため、SQLエンジンを使用するとパフォーマンスが向上します。

+0

私はプロジェクトを持っており、SpringでSpringを使用するとSQLインジェクションが可能であることを示したいと思います。私は春とjdbcでそれをすることは可能ですか?また、私は標準のjdbcを使用することができます(preparedstatmentを使わずに)春に – user813056

+0

@ user813056私の編集を参照してください –

関連する問題