Java captchaライブラリの推奨事項[終了]
-
03-07-2019 - |
質問
JCaptchaの代替品を探していますが、JCaptchaはもはやメンテナンスされていないようで、最初はあまり良くありません。置き換えは、JavaEE webappsとうまく統合する必要があります。
ご覧のとおり、3つのオプションがあります:
- JCaptcha-メンテナンスされていない、粗雑なAPI
- SimpleCaptcha-より優れたAPI、より優れたcaptcha、しかしJava6のみのようです
- ReCaptcha-使いやすく、リモートWebサービスを使用してキャプチャを生成しますが、ルックアンドフィールをあまり制御しません
誰かが他の人を使用したことがありますか?
他のヒント
私は SimpleCaptcha の著者です。人類のためにできる限りReCaptchaを使用することをお勧めしますが、一部の組織ではReCaptchaなどのライブラリを禁止するポリシーがあるため、SimpleCaptchaを提供しました。 SimpleCaptchaは完全にスタンドアロンであり、外部の依存関係はありません。J2EEコンテナー内にいる限り、あなたは良いはずです。
また、SimpleCaptchaはJava 1.5またはJava 6で利用可能になりました。
ReCaptchaがダウン/使用不可になるとどうなりますか?サービスは単純に停止しますか?ダウンしているときに単にサインアップを停止しますか? ReCaptchaが実行されていなくても、ユーザーがサインアップできるようにしますか?もしそうなら、これのセキュリティへの影響は何ですか?特に、CAPTCHAをサインアップ以外の目的で使用している場合は、パスワードフォーム、ログインフォーム、...をリセットします。CAPTCHAコンポーネントなしでは使用できません。
CAPTCHAのJavaの世界は悲しい状態にあり、SimpleCaptchaはホストされたサービスを受け入れられない私たちにとって最良のソリューションのようです。
recaptchaが今日ほど人気になる前に、 http://kaptcha.googlecode.com を作成しました。また、それを自分でホストする機能も提供します。これは状況によっては必要になる場合があります。
Kaptchaは大幅に変更および更新されたSimpleCaptchaのバージョンであり、JDK5 / 6をサポートしています。
SimpleCaptchaは本当にすてきで使いやすいです。
JSF 2.0でSimpleCaptchaを使用する方法の例を次に示します(ホームページにはJSPの例があります)
Beanにcaptchaの値を保存することすら気にかけていないことに注意してください。検証するだけです。
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"));
}
}
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>
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>
お楽しみください:-)
サードパーティのキャプチャサービス(recaptchaなど)に依存する代わりに、独自のキャプチャサービスをホストする場合は、KaptchaをRecaptchaの代替として使用できます。
ソースを取得できました(GITではなく、ブラウザから1つずつ:-()および1.5でビルドできました。JDK1.5バージョンで問題が発生しました。古いJavaバージョンでコンパイルされたものはめちゃくちゃです)これは自分で作成したjarをコピーしたときに解決され、魅力のように動作します。これを使用することを強くお勧めします.jcaptchaを試しましたウェブは画像内のコードを確認するのに苦労するべきではありません。それは目的を無効にします。...