Passos do aprimoramento de segurança Abaixo, teremos duas novas páginas: formulario.jsp e cadastrar.jsp que farão o cadastro dos nossos usuários;em seguida iremos alterar a página, logar.jsp para suportar senhas em MD5. Criaremos ainda uma classe que irá armazenar os dados dos nossos usuários. Classe Usuario. package estacio; public class Usuario { public String nome; public String login; public String senha; public String telefone; } formulario.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Cadastro de usuário</title> </head> <body> <form action="cadastrar.jsp"> <fieldset> <legend>Cadastro de usuários</legend> <table> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> </table> </fieldset> </form> <td>Nome:</td> <td><input name="nome" type="text"/></td> <td>Login:</td> <td><input name="login" type="text"/></td> <td>Telefone:</td> <td><input name="telefone" type="text"/></td> <td>Senha:</td> <td><input name="senha" type="password"/></td> <td><input type="reset" value="Limpar"/></td> <td><input type="submit" value="Enviar"/></td> 1 </body> </html> cadastrar.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="java.security.*" %> <%@page import="java.math.BigInteger" %> <%@page import="estacio.Usuario" %> <%@page import="java.util.*" %> <%! //Método que fará a conversão public static String md5(String senha){ String sen = ""; MessageDigest md = null; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } BigInteger hash = new BigInteger(1, md.digest(senha.getBytes())); sen = hash.toString(16); return sen; } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Cadastro de usuário</title> </head> <body> <% try{ Usuario u = new Usuario(); u.nome = request.getParameter("nome"); u.login = request.getParameter("login"); u.senha = request.getParameter("senha"); u.telefone = request.getParameter("telefone"); //Exibe no console a senha recebida System.out.println("Senha recebida:" + u.senha); //Substituo a senha sem conversão pela senha já convertida u.senha = md5(u.senha); System.out.println("Senha em MD5:" + u.senha); //Utilizarei o objeto application para armazenar os usuários 2 application.getAttribute("usuarios"); HashMap<String, Usuario> usuarios = (HashMap<String, Usuario>) application.getAttribute("usuarios"); if(usuarios==null){ usuarios = new HashMap<String, Usuario>(); } usuarios.put(u.login , u); application.setAttribute("usuarios", usuarios); out.println("<h3>Cadastro realizado com sucesso!.</h3>"); }catch (Exception e){ out.println("<h3>Erro inesperado.</h3>"); } %> <a href="index.jsp">Clique aqui para se logar</a> </body> </html> Agora, devemos alterar nossa página logar.jsp para que esta passe usar MD5 e utilize os usuários existentes no objeto application. logar.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="java.security.*" %> <%@page import="java.math.BigInteger" %> <%@page import="estacio.Usuario" %> <%@page import="java.util.*" %> <%! //Método que fará a conversão public static String md5(String senha){ String sen = ""; MessageDigest md = null; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } BigInteger hash = new BigInteger(1, md.digest(senha.getBytes())); sen = hash.toString(16); return sen; } %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Login</title> </head> <body> <% //Pega os usuários adicionados ao objeto application HashMap<String, Usuario> usuarios = (HashMap<String, Usuario>) application.getAttribute("usuarios"); 3 if(usuarios!=null){ //pega os parâmetros envias pelo formulários String login = request.getParameter("login"); String senha = request.getParameter("senha"); //valida o usuário e senha Usuario u = usuarios.get(login); if(login!=null && senha !=null && usuarios.get(login)!=null && usuarios.get(login).senha!=null && usuarios.get(login).senha.equals(md5(senha))){ session.setAttribute("login", login); response.sendRedirect("principal.jsp"); }else{ } }else{ %> <h2 style="color: red">Usuário ou senha inválido</h2> <a href="index.jsp">Clique aqui para voltar</a> <% %> <h2 style="color: red">Não existem usuários cadastrados</h2> <a href="formulario.jsp">Clique aqui para se cadastrar</a> <% } %> </body> </html> 4