con - jdbctemplate spring ejemplos
¿Spring JDBC proporciona alguna protección contra los ataques de inyección de SQL? (1)
La abstracción de JdbcTemplate de Spring proporciona mucha funcionalidad, pero ¿puede usarse de tal manera que brinde protección contra ataques de inyección SQL?
Por ejemplo, como el tipo de protección que obtendría utilizando PreparedStatement con la parametrización definida correctamente.
Ciertamente lo hace. Este ejemplo es directamente de los documentos de Spring 3.0 (pero es el mismo en 2. *):
String lastName = this.jdbcTemplate.queryForObject(
"select last_name from t_actor where id = ?",
String.class, 1212L);
Como puede ver, favorece fuertemente las declaraciones preparadas (que debe usar detrás de escena para usted): usted especifica los parámetros con los marcadores de posición ( ?
) Y suministra una matriz de objetos para completar los parámetros. (El último parámetro es el tipo de resultado esperado, pero eso no es muy relevante para esta pregunta).
También puede usar un NamedParameterJdbcTemplate
y suministrar los parámetros en un Map
, que quizás sea menos eficiente pero definitivamente más mnemónico.