Análisis de la inyección de SQL

Sql inyecta desde poco profunda y profunda

Hay una mesa de estudiantes


Ahora tenemos que conseguir los resultados de los exámenes finales de los estudiantes basándose en el nombre del estudiante.

1.public static void getStudent(String name) throws ClassNotFoundException {
2.    Connection conn = null;
3.    Statement stmt = null;
4.    ResultSet rs = null;
5.    try {
6.      Class.forName(JDBC_DRIVER);
7.      conn = DriverManager.getConnection(DB_URL, USER, PASS);
8.      stmt = conn.createStatement();
9.      rs = stmt.executeQuery("select name,score from student where name =' " + name +"'");
10.      while (rs.next()) {
11.        System.out.println(rs.getString("name") + ":" + rs.getInt("score"));
12.      }
13.    } catch (SQLException e) {
14.      // ignore
15.    } finally {
16.      if (rs != null) {
17.        try {
18.          rs.close();
19.        } catch (Exception e) {
20.          // ignore
21.        }
22.      }
23.      if (stmt != null) {
24.        try {
25.          stmt.close();
26.        } catch (Exception e) {
27.          // ignore
28.        }
29.      }
30.      if (conn != null) {
31.        try {
32.          conn.close();
33.        } catch (SQLException e) {
34.          // ignore
35.        }
36.      }
37.    }
38.  }

1. Sírvanse indicar qué riesgos de seguridad por encima de este programa? Y dar una prueba específica.

2. aplicaciones, por favor re-escritura para hacer frente a estos riesgos.

formulario de entrada del usuario, a través de SQL Server engaño malicioso. Arraigada en el sql mosaico dinámico;

En este punto se puede utilizar PreparedStatement. ? parámetros de marcador puede ser simplemente impidieron sql inyectados.

Tenga en cuenta que en un mensaje de error de base de datos de paquete.

Hay una cierta información secreta está encriptada.

 

 

Publicado 67 artículos originales · ganado elogios 106 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/m0_37676429/article/details/105265802
Recomendado
Clasificación