Apenas la semana pasada, yo estaba haciendo un poco de PHP cosas. He trabajado un poco de solución para evitar inyecciones SQL. PHP ha sido siempre mi hombre, tiene fácilmente 3 soluciones para el uso (tal vez más). Una es la de permitir «la magia de» consultas utilizando stripslashes() función. Otro (el recomendado) es el uso de mysql_real_escape_string() función.
Que sencillo y que mi problema está resuelto. Sin embargo, las cosas no parecen ser tan sencillo cuando se trata de JSP. He buscado y no encuentro ninguna función integrada a la franja de barras o hacer ese tipo de cosas (creo que esa funcionalidad se puede implementar utilizando funciones básicas de JAVA, pero…).

Por favor me ayudan a proteger a mi base de datos. He oído acerca de PreparedStatement, pero realmente no puedo conseguir mi cabeza alrededor de ella? (Puedo sentir el verdadero significado de newbieness).

Que sistema de base de datos está utilizando? MySQL?
Sí, es el MySQL!

OriginalEl autor Nadjib Mami | 2011-06-07

1 Comentario

  1. 23

    Solo uso PreparedStatement en lugar de la Instrucción.

    I. e. uso

    String sql = "INSERT INTO tbl (col1, col2, col3) VALUES (?, ?, ?)";
    preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setString(1, col1);
    preparedStatement.setString(2, col2);
    preparedStatement.setString(3, col3);
    preparedStatement.executeUpdate();

    lugar de

    String sql = "INSERT INTO tbl (col1, col2, col3) VALUES ('" + col1 + "', '" + col2 + "', '" + col3 + "')";
    statement = connection.createStatement();
    statement.executeUpdate(sql);

    La PreparedStatement también ofrece un cómodo métodos setter para los otros tipos, tales como setInt(), setDate(), setBinaryStream(), etcétera.

    Por favor, tenga en cuenta que este problema no está relacionado con JSP. Está relacionado con Java en general. Escrito raw código Java en una JSP de la clase también se considera un una mala práctica. La mejor práctica es crear una clase independiente que realiza todo el DB interacción tareas en una tabla en particular, que también se llama un DAO (Data Access Object) de la clase. A continuación, puede importar/uso de esta clase DAO en un servlet clase.

    Véase también:

    Wow, aquí es un comentario que se extiende un montón de información, su comentario fue muy útil para mí, sencilla, os doy las gracias y es resuelto gracias a ti!
    Eres bienvenido. Por el camino, fue una respuesta, no un comentario. Esas pequeñas cosas que usted vea a continuación las preguntas/respuestas de los comentarios 🙂
    +1 para el «código de Java en JSP es una mala práctica» comentario. Parece una gran idea cuando se está poniendo en marcha con Jsp, pero, oh, el dolor al volver más tarde para sacar todo lo que no vista relacionados con la lógica.

    OriginalEl autor BalusC

Dejar respuesta

Please enter your comment!
Please enter your name here