33

Spring のJdbcTemplate抽象化は多くの機能を提供しますが、SQL インジェクション攻撃からの保護を提供するような方法で使用できますか?

たとえば、PreparedStatementと適切に定義されたパラメータ化を使用して得られる保護のようなものです。

4

1 に答える 1

35

それは間違いなくそうです。この例は、Spring 3.0のドキュメントから直接引用したものです(ただし、2。*でも同じです)。

String lastName = this.jdbcTemplate.queryForObject( 
        "select last_name from t_actor where id = ?", 
        String.class, 1212L); 

ご覧のとおり、プリペアドステートメント(舞台裏で使用する必要があります)を強く?支持します。プレースホルダー( )を使用してパラメーターを指定し、パラメーターに入力するオブジェクトの配列を指定します。(最後のパラメーターは期待される結果のタイプですが、この質問にはあまり関係ありません。)

を使用してNamedParameterJdbcTemplate、パラメータをで指定することもできMapます。これはおそらく効率は劣りますが、間違いなくニーモニックになります。

于 2011-08-31T09:46:59.877 に答える