Me pregunto cómo MVC de Spring manijas de las inyecciones de SQL (y otros problemas de seguridad: XSS, código [javascript] inyección, etc). Estoy hablando principalmente acerca de escapar de los valores que se agregan a DBs y tal. Me parece que no puede encontrar ninguna respuesta, porque cada vez que me de la búsqueda para la primavera de inyección de sql resultados que implican la inyección de dependencia surgir.

Mi flujo es como sigue: desde el navegador del cliente puedo presentar una solicitud que consta de un JSON con algunos parámetros de la consulta (no la instrucción SQL, que sería demasiado estúpido – para formar la consulta SQL en JS). Cuando la solicitud llega a la correctamente anotado método en el Controlador, la solicitud se asigna a través de @RequestBody el uso de Jackson a un «objeto de solicitud». Ahora este objeto es enviado a la DAO, donde a través de JDBC Plantilla que consulta la base de datos (y el uso de RowMapper yo mapa de los resultados).

En el DAO tengo algo así como:

public int countAll(RequestObject request) {
    String sql = "SELECT count(*) FROM employees WHERE name = '" + request.getName() + "'";

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    int count = jdbcTemplate.queryForInt(sql);

    return count;
}

Ahora es este enfoque seguro de la inyección de SQL?
No son JDBCTemplate consultas de base segura dado que fluyen a través de Spring MVC?

Podríamos tener una pequeña discusión sobre esto?

OriginalEl autor BogdanSorlea | 2011-12-12

1 Comentario

  1. 16

    Cualquier momento crear una consulta por la concatenación que se vunerlable a ataques de inyección de

    pasar los parámetros correctamente:

    jdbcTemplate.queryForInt(sql, args, argTypes)

    por ejemplo:

            JdbcTemplate insert = new JdbcTemplate(dataSource);
        insert.update("INSERT INTO PERSON (FIRSTNAME, LASTNAME) VALUES(?,?)",
                new Object[] { firstName, lastName });
    Sí, de hecho, eso es algo obvio para mí. La pregunta es… en casos como el que he explicado anteriormente Primavera escapa algo o no? Ahora, pensándolo bien, creo que no, pero sólo para estar seguro de que prefiero preguntar.
    Y, sin embargo, no lo han implementado. La primavera no se escape nada. Basado en la información que han dado los anteriores es su único problema.
    Y esta pregunta no se refiere únicamente a la primavera o java. Totalmente acepte esta respuesta.

    OriginalEl autor Mick

Dejar respuesta

Please enter your comment!
Please enter your name here