Pergunta

Eu estou procurando um substituto para JCaptcha, o que não parece ser mantida mais, e não é muito bom para começar. A substituição tem de integrar bem com JavaEE webapps.

Como eu posso vê-lo, há três opções:

  • JCaptcha - Não é mais mantido, API bruto
  • SimpleCaptcha - muito mais agradável API, captchas mais agradáveis, mas parece ser Java6 única
  • ReCaptcha - Fácil de usar, usa-service web remoto para gerar captchas, mas não muito controle sobre look and feel

Alguém já usou quaisquer outros, que eles recomendam?

Foi útil?

Solução

ReCaptcha é a única captcha você deve usar, porque é a única captcha que faz o mundo melhor (melhorar OCR resultados ao texto antigo), com banco de dados de quase ilimitada.

Todas as outras captchas são geralmente limitados pelo seu banco de dados, ou fazer nada de bom para este mundo.

EDIT :: achei passos como implementar captcha usando recaptcha.

Você pode verificar tanto online como offline captcha usando java aqui

Outras dicas

Eu sou o autor da SimpleCaptcha . Enquanto eu recomendo - por amor da humanidade - usando ReCaptcha onde você pode, eu desde SimpleCaptcha porque algumas organizações têm políticas que proíbem bibliotecas como ReCaptcha. SimpleCaptcha é para ser totalmente independente, sem dependências externas:. Contanto que você está em um recipiente J2EE, você deve ser bom

Além disso, SimpleCaptcha está agora disponível para qualquer Java 1.5 ou Java 6.

O que acontece quando ReCaptcha é baixo / indisponível? Será que o seu serviço simplesmente parar? Você simplesmente parar de assinatura pessoas até quando é para baixo? Você permite que os usuários se inscrever, mesmo se ReCaptcha não está funcionando? Se sim, quais são as implicações desta segurança? Especialmente se você usar CAPTCHA para mais do que apenas a inscrição, por exemplo, formas de redefinição de senha, formulários de login, ... o que não seria aceitável usar sem o componente CAPTCHA.

O mundo Java de CAPTCHAs está em um estado triste, com SimpleCaptcha aparentemente a melhor solução para aqueles de nós lá fora, que não pode aceitar um serviço hospedado.

Eu criei http://kaptcha.googlecode.com antes recaptcha tornou-se tão popular como é hoje. Ele também oferece a capacidade para hospedar-lo sozinho, o que pode ser necessário em algumas situações.

Kaptcha é uma versão fortemente modificada e atualizada de SimpleCaptcha e suporta JDK5 / 6.

SimpleCaptcha é muito bom e fácil de usar.

Aqui está um exemplo de como usar SimpleCaptcha com JSF 2.0 (a página inicial tem um exemplo para JSP)

Note que não estou sequer se preocupar em armazenar o valor captcha no feijão, eu só estou validando-o.

O bean:

// imports missing here

@ManagedBean
@SessionScoped
public class LoginBean implements Serializable
{
    public void validateCaptcha(FacesContext context,
            UIComponent componentToValidate,
            Object value)
            throws ValidatorException
    {
        HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
        Captcha secretcaptcha = (Captcha) session.getAttribute(Captcha.NAME);
        if (secretcaptcha.isCorrect(value.toString()))
            return;

        // optional: clear field
        ((HtmlInputText) componentToValidate).setSubmittedValue("");

        throw new ValidatorException(new FacesMessage("Captcha does not match"));
    }
}

O segmento relevante do facelet:

        <h:form id="CaptchaForm">
            Type this: <br/>
            <h:graphicImage id="CaptchaImgID" value="/simpleCaptcha.png"/> <br/>
            <h:inputText id="CaptchaID"
                         required="true"
                         requiredMessage="Captcha missing"
                         validator="#{loginBean.validateCaptcha}"
                         validatorMessage="Captcha does not match"
                         immediate="true">
            </h:inputText>
            <br/>
            <h:commandButton value="Check"/>

            <p/>
            <!-- message for the input field -->
            <h:message id="CaptchaMsgID" for="CaptchaID" style="color:red" />
        </h:form>

O segmento relevante do web.xml:

<servlet>
    <servlet-name>SimpleCaptcha</servlet-name>
    <servlet-class>nl.captcha.servlet.SimpleCaptchaServlet</servlet-class>
<init-param>
    <param-name>captcha-width</param-name>
    <param-value>250</param-value>
</init-param>
<init-param>
    <param-name>captcha-height</param-name>
    <param-value>75</param-value>
</init-param>
</servlet>
<servlet-mapping>
    <servlet-name>SimpleCaptcha</servlet-name>
    <url-pattern>/simpleCaptcha.png</url-pattern>
</servlet-mapping>

Enjoy: -)

Kaptcha é uma boa alternativa para Recaptcha se você está olhando para hospedar seu próprio serviço de captcha em vez de confiar em um serviço captcha terceiros (como recaptcha).

Eu era capaz de conseguir fonte (um por um a partir do navegador, não GIT :-() e construção com 1,5. Eu tive um problema com a versão 1.5 JDK vomitar o erro versão ruim classe (aquele que aparece quando compilado com versão java mais velho é confuso) que foi resolvido quando eu copiei o jar-me construído e funciona como um encanto. Eu aconselho vivamente qualquer um usar isso. Eu tentei jcaptcha e devo dizer que é uma porcaria .. os visitantes do a web deve ter que lutar para verificar o código na imagem, que derrota o propósito ....

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top