Estoy usando JSP por un tiempo. Tengo la siguiente instrucción select:

query = "SELECT * FROM USER_PASS WHERE USERNAME = '" + name + "'";

Que es vulnerable a inyecciones SQL. He buscado en algunos artículos y se encontró que puedo usar sentencias preparadas para evitar inyecciones SQL. Me parece más confuso. Mi opinión es que si puedo encontrar los insumos, tales como ;' o -- en la entrada dada por el usuario, a continuación, me puede mostrar un mensaje de alerta diciendo que no puede usar estos símbolos aquí y no voy a procesar los datos. Esta podría ser mi código JavaScript:

function validateSQL()
{
var x=document.forms["myForm"]["username"].value;
var pos = 0;
pos=x.indexOf("'");
if (pos!=0)
  {
  alert("Trying to hack me?");
  return false;
  }
}

Que es mejor utilizar? ¿Tiene esto alguna deméritos?

Quien dice que el atacante se va a usar el frontend? Automáticos de inyección SQL herramientas acaba de enviar peticiones HTTP.
Estoy escribiendo un preparedstatement en lugar de este código javascript, a continuación, va a evitar las inyecciones?
Me gustaría +10 Blender comentario si yo pudiera – no confiar en el cliente. Declaraciones preparadas en el servidor evitará que todo los ataques de inyección SQL (pero no necesariamente en otras superficies). No: la Prevención de la mala información que está fuera del alcance de los ataques de inyección SQL.
Así que voy a eliminar la pregunta? Tengo la respuesta que estaba buscando. A partir de tu comentario

OriginalEl autor Kunu Munu | 2013-02-23

1 Comentario

  1. 6

    Definitivamente no puede depender de JavaScript en el Cliente para protegerlos, los usuarios malintencionados pueden fácilmente eludir cualquier lado del cliente cheques .. usted puede simplemente desactivar JavaScript en cualquier momento en su navegador.

    Sólo porque algo es confuso, no significa que usted no debe hacerlo; consultas con parámetros no son confusos, por lo que debe aprender y practicar hasta que entienda. ; , -- no están ni siquiera cerca de la sólo los símbolos que podrían provocar que la Inyección de SQL.

    No estoy familiarizado con JSP, el método para la preparación de las consultas parece bastante simple.

    String myquery = "SELECT * FROM USER_PASS WHERE USERNAME = ?";
    PreparedStatement mystatement = connection.prepareStatement(myquery);
    mystatement.setString(1, name);
    ResultSet myresults = mystatement.execute();

    OriginalEl autor Explosion Pills

Dejar respuesta

Please enter your comment!
Please enter your name here