Domanda

Sto cercando un sostituto per JCaptcha, che non sembra più essere mantenuto, e non è molto buono per cominciare. Il sostituto deve integrarsi perfettamente con le webapp JavaEE.

Come posso vederlo, ci sono tre opzioni:

  • JCaptcha - API non più mantenuta, grezza
  • SimpleCaptcha - API molto più belle, captcha più belli, ma sembra essere solo Java6
  • ReCaptcha - facile da usare, utilizza il servizio web remoto per generare captcha, ma non ha molto controllo sull'aspetto

Qualcuno ne ha usati altri, che raccomanderebbero?

È stato utile?

Soluzione

ReCaptcha è l'unico captcha che dovresti usare, perché è l'unico captcha che rende il mondo migliore (migliora l'OCR risultati al vecchio testo), con un database quasi illimitato.

Tutti gli altri captcha sono generalmente limitati dal suo database o non fanno nulla di buono in questo mondo.

EDIT :: Ho trovato i passaggi su come implementare captcha usando recaptcha.

Puoi controllare sia captcha online che offline usando java qui

Altri suggerimenti

Sono l'autore di SimpleCaptcha . Mentre consiglierei - per l'umanità - di usare ReCaptcha dove puoi, ho fornito SimpleCaptcha perché alcune organizzazioni hanno politiche che vietano le biblioteche come ReCaptcha. SimpleCaptcha è pensato per essere completamente autonomo, senza dipendenze esterne: fintanto che sei in un contenitore J2EE, dovresti essere buono.

Inoltre, SimpleCaptcha è ora disponibile per Java 1.5 o Java 6.

Cosa succede quando ReCaptcha è inattivo / non disponibile? Il tuo servizio si ferma semplicemente? Smetti semplicemente di iscrivere le persone quando è inattivo? Consenti agli utenti di registrarsi anche se ReCaptcha non è in esecuzione? In tal caso, quali sono le implicazioni di sicurezza di questo? Soprattutto se usi CAPTCHA per qualcosa di più della semplice registrazione, ad es. reimpostare i moduli password, i moduli di accesso, ... che non sarebbe accettabile utilizzare senza il componente CAPTCHA.

Il mondo Java di CAPTCHAs è in uno stato triste, con SimpleCaptcha apparentemente la migliore soluzione per quelli di noi là fuori che non possono accettare un servizio ospitato.

Ho creato http://kaptcha.googlecode.com prima che recaptcha diventasse popolare come lo è oggi. Ti offre anche la possibilità di ospitarti da solo, il che potrebbe essere necessario in alcune situazioni.

Kaptcha è una versione fortemente modificata e aggiornata di SimpleCaptcha e supporta JDK5 / 6.

SimpleCaptcha è davvero bello e facile da usare.

Ecco un esempio su come utilizzare SimpleCaptcha con JSF 2.0 (la homepage ha un esempio per JSP)

Nota che non mi sto nemmeno preoccupando di memorizzare il valore captcha nel bean, lo sto solo convalidando.

Il 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"));
    }
}

Il segmento rilevante della faccetta:

        <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>

Il segmento rilevante di 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>

Divertiti :-)

Kaptcha è una bella alternativa a Recaptcha se stai cercando di ospitare il tuo servizio captcha invece di affidarti a un servizio captcha di terze parti (come recaptcha).

Sono stato in grado di ottenere il sorgente (uno per uno dal browser, non GIT :-() e compilare con 1.5. Ho avuto un problema con la versione JDK 1.5 che ha generato l'errore della versione di classe errata (quella che compare quando compilato con la versione precedente di Java è incasinato) che è stato risolto quando ho copiato il vaso che ho costruito da solo e funziona come un incantesimo. Consiglio vivamente a tutti di usarlo. Ho provato jcaptcha e devo dire che fa schifo .. i visitatori di il web non dovrebbe fare fatica a verificare il codice nell'immagine, che vanifica lo scopo ....

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top