try(PreparedStatement st = connection.prepareStatement("SELECT ... ? ... ?"));
st.setInt(1, anho);
st.setString(2, nombre);
ResultSet rs = st.executeQuery();
//WARNING: nothing as param to executeQuery or we vulnerable af
Los interrogantes del prepared statement van sin entrecomillar, lo metemos directamente en la cadena, sin concatenar nada. Java ya interpreta directamente cómo tiene que gestionar eso.
Si metiésemos parámetro executeQuery() estaríamos llamando al método de la superclase Statement y seríamos igualmente vulnerables que si no usásemos prepared
Los interrogantes del prepared statement van sin entrecomillar, lo metemos directamente en la cadena, sin concatenar nada. Java ya interpreta directamente cómo tiene que gestionar eso. Si metiésemos parámetro executeQuery() estaríamos llamando al método de la superclase Statement y seríamos igualmente vulnerables que si no usásemos prepared