Mi chiedo come Spring MVC gestisce iniezioni SQL (e altre questioni di sicurezza: XSS, codice [javascript] iniezione, ecc). Sto parlando principalmente di sfuggire i valori che vengono aggiunti a DB e così via. Non riesco a trovare alcuna risposta perché ogni volta che cerco i risultati di iniezione di primavera sql che comportano l'iniezione di dipendenza sorgono.Spring (MVC) Evita l'iniezione di SQL?
Il mio flusso è il seguente: dal browser del client faccio una richiesta composta da un JSON con alcuni parametri di query (non l'istruzione SQL, che sarebbe troppo stupida - per formare la query SQL in JS). Quando la richiesta raggiunge il metodo correttamente annotato nel controller, la richiesta viene mappata tramite @RequestBody con Jackson a un "oggetto di richiesta". Ora, questo oggetto viene inviato al DAO, in cui utilizzando JDBC Template interrogo il db (e usando RowMapper traccio i risultati).
Nel DAO ho qualcosa di simile:
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;
}
Ora è al sicuro da SQL injection questo approccio? non sono JDBCTemplate -based query date È più sicuro che fluisce attraverso Spring MVC?
Possiamo avere un po 'di discussione su questo?
Sì, in realtà questo è un po 'ovvio per me . La domanda è ... in casi come quello che ho spiegato sopra, Spring sfugge a qualcosa o no? Ora, ripensandoci, penso che non sia così, ma solo per essere sicuro che preferirei chiedere. – BogdanSorlea
Eppure non l'hai implementato. La primavera non sfuggirà a nulla. Sulla base delle informazioni che hai dato sopra è il tuo unico problema. – Mick
E questa domanda non solo si riferisce alla primavera o Java. Accetta totalmente questa risposta. – Mukus