java验证码库的建议

java验证码库的建议,java,jakarta-ee,captcha,recaptcha,simplecaptcha,Java,Jakarta Ee,Captcha,Recaptcha,Simplecaptcha,我正在寻找JCaptcha的替代品,它似乎不再被维护,而且一开始也不是很好。替代者必须与JavaEE webapps很好地集成 在我看来,有三种选择: JCaptcha-不再维护,原油API SimpleCaptcha——更好的API、更好的验证码,但似乎只是Java6 ReCaptcha-易于使用,使用远程web服务生成验证码,但对外观没有太多控制 有人使用过他们推荐的其他验证码吗?是您应该使用的唯一验证码,因为它是唯一可以让世界变得更好(将OCR结果改进为旧文本)的验证码,几乎没有限制的

我正在寻找JCaptcha的替代品,它似乎不再被维护,而且一开始也不是很好。替代者必须与JavaEE webapps很好地集成

在我看来,有三种选择:

  • JCaptcha-不再维护,原油API
  • SimpleCaptcha——更好的API、更好的验证码,但似乎只是Java6
  • ReCaptcha-易于使用,使用远程web服务生成验证码,但对外观没有太多控制
有人使用过他们推荐的其他验证码吗?

是您应该使用的唯一验证码,因为它是唯一可以让世界变得更好(将OCR结果改进为旧文本)的验证码,几乎没有限制的数据库

所有其他验证码通常都受到其数据库的限制,或者对这个世界没有任何好处

编辑::我找到了使用recaptcha实现验证码的步骤。


您可以使用java检查在线和离线验证码。当ReCaptcha关闭/不可用时会发生什么?你的服务只是停止吗?你是不是只是在它停止的时候就不再让人们注册了?即使ReCaptcha未运行,您是否允许用户注册?如果是,这对安全有什么影响?特别是如果您使用CAPTCHA不仅仅是为了注册,例如重置密码表单、登录表单。。。如果没有验证码组件,则无法使用

验证码的Java世界正处于一种令人悲伤的状态,对于我们这些无法接受托管服务的人来说,SimpleCaptcha似乎是最好的解决方案。

我在recaptcha像今天一样流行之前创建的。它还为您提供了自己主持的能力,这在某些情况下可能是必要的


Kaptcha是SimpleCaptcha的一个经过大量修改和更新的版本,支持JDK5/6。

如果您希望托管自己的验证码服务而不是依赖第三方验证码服务(如Recaptcha),Kaptcha是Recaptcha的一个不错的替代品。

我是本书的作者。为了人类的利益,我建议尽可能使用ReCaptcha,但我提供了SimpleCaptcha,因为有些组织有禁止像ReCaptcha这样的库的政策。SimpleCaptcha是完全独立的,没有外部依赖性:只要您在J2EE容器中,您就应该是优秀的


此外,SimpleCaptcha现在可用于Java 1.5或Java 6。

SimpleCaptcha非常好用

下面是一个如何在JSF2.0中使用SimpleCaptcha的示例(主页上有一个JSP示例)

请注意,我甚至没有费心在bean中存储captcha值,我只是验证它

豆子:

//此处缺少导入
@ManagedBean
@会议范围
公共类LoginBean实现可序列化
{
public void validateCaptcha(FacesContext上下文,
UIComponent组件验证,
对象值)
抛出验证器异常
{
HttpSession会话=(HttpSession)context.getExternalContext().getSession(false);
Captcha secretcaptcha=(Captcha)session.getAttribute(Captcha.NAME);
if(secretcaptcha.isCorrect(value.toString()))
返回;
//可选:清除字段
((HtmlInputText)componentToValidate).setSubmittedValue(“”);
抛出新的ValidatorException(新的FacesMessage(“验证码不匹配”);
}
}
facelet的相关部分:


键入以下内容:


web.xml的相关部分:


SimpleCaptcha
nl.captcha.servlet.SimpleCaptchaServlet
验证码宽度
250
验证码高度
75
SimpleCaptcha
/simpleCaptcha.png

享受:-)

好的,但对人类的好处并不在我的优先考虑范围之内:)此外,JCaptcha和SimpleCaptcha生成随机验证码,因此数据库大小不是问题。还有一件事-许多彩色/旋转背景/线条/图像的验证码对于大多数用户来说太复杂了(例如,rapidshare使用的著名猫号). 相反,recaptcha是基于真实的英语单词,所以它对大多数人来说都是有用的。你不会希望应用验证码,90%的人会给你发邮件说“我无法通过cpatcha)…我质疑随机验证码比数据库支持的验证码更容易受到攻击的说法。关于ReCaptcha,一个好处是它摆在人们面前的是一个高质量OCR实现已经失败的词。ReCaptcha对很多人来说太难了,只是经常无法阅读。我想知道ReCaptcha的人性益处是否会到达中国大陆防火墙后面的人手中。:)拜托,你真的认为你的服务比ReCaptcha更稳定吗,尤其是当谷歌收购它的时候?甚至Facebook也在使用ReCaptcha,所以不要担心,除非你运行的服务比Facebook更大。。。我仍然不认为有任何captcha系统比ReCaptcha更好。谷歌以前已经失败过好几次(不仅仅是Gmail,还有搜索)。如果你有自己的服务,只有你自己使用,那么你可以轻松地说,当你的验证码关闭时,你的整个系统都关闭了。我真的很想知道Facebook在停电的情况下会怎么做——他们会在修复之前把它裸露出来吗?他们有后备计划吗?停机对他们来说有那么重要吗?如果你提供的服务比查看谁捅了你更重要,或者你有SLA要求,那么解决方案就不会像“等一等”那么简单了。@Stephen-当CEO敲你的门问为什么他们第N次忘记密码后不能重置密码,或者不能将最新的大客户添加到系统中时,“通常不重要”并不能解决这个问题,它取决于你的服务质量