
Ayuda Como evitar el sqlinjection en login?
Publicado por snakechaos (1 intervención) el 17/01/2015 03:32:44
Bueno busque en google pero solo aparece informacion para php..
Lo que ando buscando es como acabar con un sql injection como lo es el ' OR '1'='1 o el ' having 1= 1-- pero en un login en jsp
tengo mi form mas o menos asi en el login.jsp
luego lo valido en un servlet
y poseo una clase llamada Basedato que es de donde hago las consultas el metodo para la consulta la tengo asi:
Lei que por el and surge el problema actualmente tengo la vulnerabilidad :/
Alguien me puede ayudar para que esto no ocurra :)
Saludos y gracias por contestar
Lo que ando buscando es como acabar con un sql injection como lo es el ' OR '1'='1 o el ' having 1= 1-- pero en un login en jsp
tengo mi form mas o menos asi en el login.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form action="/appMensajes/ServletValidar" method="post">
<div class="control-group">
<table>
<tr>
<td><h3>Usuario</h3></td><td><input type="text" name="user"></td>
</tr>
<tr>
<td><h3>Contraseña</h3></td><td><input type="password" name="pass"></td>
</tr>
<tr>
</tr>
</table>
</br>
<center><input type="submit" class="btn btn-primary" value="Aceptar"></center>
</div>
</form>
luego lo valido en un servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean logueado=false;
if (request.getParameter("user") != null &&
request.getParameter("pass")!=null) {
BaseDato bd = new BaseDato();
Usuario u = bd.getUsuario(request.getParameter("user"),
request.getParameter("pass"));
if (u!=null) {
HttpSession session = request.getSession(true);
session.setAttribute("usuario", u.getUser());
session.setAttribute("nombre", u.getNombre());
session.setAttribute("id", u.getId_user());
session.setAttribute("tipo", u.getTipo());
logueado=true;
}protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean logueado=false;
if (request.getParameter("user") != null &&
request.getParameter("pass")!=null) {
BaseDato bd = new BaseDato();
Usuario u = bd.getUsuario(request.getParameter("user"),
request.getParameter("pass"));
if (u!=null) {
HttpSession session = request.getSession(true);
session.setAttribute("usuario", u.getUser());
session.setAttribute("nombre", u.getNombre());
session.setAttribute("id", u.getId_user());
session.setAttribute("tipo", u.getTipo());
logueado=true;
}
}
if (logueado) {
response.sendRedirect("index.jsp");
} else {
response.sendRedirect("login.jsp?error=1");
}
}
}
if (logueado) {
response.sendRedirect("index.jsp");
} else {
response.sendRedirect("login.jsp?error=1");
}
}
y poseo una clase llamada Basedato que es de donde hago las consultas el metodo para la consulta la tengo asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public Usuario getUsuario (String user, String pass) {
Statement st;
Usuario u = null;
if (conex != null) {
try {
st = conex.createStatement();
ResultSet rs = st.executeQuery(String.format("SELECT * FROM usuario WHERE user = '%s' AND pass = '%s'", user, pass));
if (rs.next())
u = new Usuario(rs.getInt("id_user"), rs.getString("user"), rs.getString("pass"), rs.getString("nombre"), rs.getString("email"), rs.getInt("tipo"));
st.close();
} catch (SQLException ex) {
}
}
return u;
}
Lei que por el and surge el problema actualmente tengo la vulnerabilidad :/
Alguien me puede ayudar para que esto no ocurra :)
Saludos y gracias por contestar
Valora esta pregunta


0