Submeter form com segurança

10 respostas
C

Oi.

Não sou de ficar usando scrptlets pra programar mas por enquanto é o jeito. No JSF sempre tem uma coisa que não consigo fazer, pesquiso mas não encontro soluçao.

Gostaria de saber uma forma de validar email, pois pesquisei no fórum e todas as formas de validação de e-mail só setam email inválido mesmo digitando de maneira correta.

Bom, eu estou validando desta forma:

if (email == null || email =="") { session.setAttribute("emailNo", email); response.sendRedirect("./cadastro.jsp"); return; } if(email.indexOf("@") > 0 || email.indexOf(".") > -1 || email.indexOf("@.") == -1) { //session.setAttribute("emailInvalido", email); // response.sendRedirect("./cadastro.jsp"); out.println("Email inválido!"); return; } if (email.length() < 10) { session.setAttribute("emailMenorQue15", email); response.sendRedirect("./cadastro.jsp"); return; } if (email.length() > 45) { session.setAttribute("emailMaiorQue45", email); response.sendRedirect("./cadastro.jsp"); return; }

Só seta invalidez.

E a outra dúvida é de como realizar um teste com if e else para saber se o form está sendo submetido do servidor onde estão as páginas e não de um pc qualquer. Em php é possível impedir que o form seja submetido fora do servidor, assim ninguém vai tentar salvar a página no pc e tentar enviar mesmo asism ^^

Por favor, necessito de ajuda.

Obrigado =]

10 Respostas

F

Olá, pesquise por validations no jsf e tb você resolve por expressões regurales.

[],

klayrocha
<h:inputText id="email" required="true">
<f:validator validatorId="checkvalidemail" />
</h:inputText>
package roseindia;

import javax.faces.*;
import javax.faces.validator.*;
import javax.faces.application.*;
import javax.faces.component.*;
import javax.faces.context.*;
import java.util.regex.*; 
public class validation implements Validator{
public validation(){}

public void validate(FacesContext facesContext, UIComponent uIComponent, Object object) throws ValidatorException{
String enteredEmail = (String)object;
Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
Matcher m = p.matcher(enteredEmail);
boolean matchFound = m.matches();

if (!matchFound) {
FacesMessage message = new FacesMessage();
message.setSummary("Invalid Email ID.");
throw new ValidatorException(message);
}
}
}
C

Não consegui usar. =/

klayrocha

Se estiver usando o Tomahawk é só fazer assim:

<h:inputText id="inputMail" value="[email protected]"> <t:validateEmail/> </h:inputText> <h:message for="inputMail"/>

Lembrando que para usar validações tem que configurar os arquivos e baixar as libs necessárias.

C

Desculpe.

Estou usando o tomcat mesmo.

Disse que não consegui usar em uma classe JAVA junto com os outros métodos.

klayrocha

Isso mesmo !!
Você esta desenvolvendo usando JSF né ?
O tomahawk é usado com o tom cat !!

C

vc poderia passar-me um exemplo bem básico mesmo, de como cadastrar já validando estes campos?

É que ultimamente não estou conseguindo criar uma classe que funcione ou então a excessão está na página mesmo.

Obrigado.

klayrocha

Para validação você precisará das seguintes libs:
oro-2.0.8.jar
commons-validator-1.2.0.jar
No JSP:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
  <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
  <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>

 <h:inputText id="inputMail" value="#{seuBen.email}">  
     <t:validateEmail/>  
 </h:inputText>  
 <h:message for="inputMail"/>

No arquivo faces-config.xml adiciona:

<application>
    <message-bundle>seupacotedeclasse.Messages</message-bundle>
</application>
peczenyj

Ah, as expressões regulares :slight_smile:

Vc pode usar JQuery no frontend com as mesmas validações e ter 2 camadas de segurança redundantes!

C

klayrocha:
Para validação você precisará das seguintes libs:
oro-2.0.8.jar
commons-validator-1.2.0.jar
No JSP:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
  <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
  <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>

 <h:inputText id="inputMail" value="#{seuBen.email}">  
     <t:validateEmail/>  
 </h:inputText>  
 <h:message for="inputMail"/>

No arquivo faces-config.xml adiciona:

<application>
    <message-bundle>seupacotedeclasse.Messages</message-bundle>
</application>

Certo, obrigado. Já baixei os dois jars, vou testar aqui e depois respondo.

Criado 6 de abril de 2009
Ultima resposta 8 de abr. de 2009
Respostas 10
Participantes 4