Java Captcha 라이브러리 권장 사항 [폐쇄
-
03-07-2019 - |
문제
나는 더 이상 유지되지 않는 것 같고 시작하기에 좋지 않은 JCAPTCHA의 대체물을 찾고 있습니다. 교체품은 Javaee WebApps와 잘 통합되어야합니다.
내가 볼 수 있듯이 세 가지 옵션이 있습니다.
- JCAPTCHA- 더 이상 유지 관리되지 않음, 조잡한 API
- Simplecaptcha- 훨씬 더 멋진 API, 더 좋은 보안치, 그러나 Java6 만있는 것 같습니다.
- Recaptcha- 사용하기 쉽고 원격 웹 서비스를 사용하여 보안 문자를 생성하지만 모양과 느낌을 많이 제어하지 않습니다.
다른 사람을 사용한 사람이 있습니까?
다른 팁
나는 저자입니다 Simplecaptcha. 인류를 위해서는 RECAPTCHA를 사용할 수있는 곳에서 추천하지만 일부 조직에는 RecAptcha와 같은 도서관을 금지하는 정책이 있기 때문에 SimpleCaptcha를 제공했습니다. Simplecaptcha는 외부 의존성이없는 전적으로 독립형이어야합니다. J2EE 컨테이너에있는 한 좋을 것입니다.
또한 Java 1.5 또는 Java 6에서 Simplecaptcha를 사용할 수 있습니다.
Recaptcha가 다운/사용할 수 없을 때 어떻게됩니까? 서비스가 단순히 중지됩니까? 사람들이 쓰러 졌을 때 사람들이 사인하는 것을 중지합니까? Recaptcha가 실행되지 않더라도 사용자가 가입 할 수 있습니까? 그렇다면 이것의 보안 영향은 무엇입니까? 특히 가입만으로 Captcha를 사용하는 경우, 예를 들어 비밀번호 양식, 로그인 양식을 재설정합니다. 이는 Captcha 구성 요소 없이는 사용할 수 없습니다.
보안 문자의 Java World는 슬픈 상태에 있으며, Simplecaptcha는 호스팅 된 서비스를 받아 들일 수없는 사람들에게 가장 적합한 솔루션으로 보입니다.
내가 만들었다 http://kaptcha.googlecode.com Recaptcha가 오늘날처럼 인기가 있기 전에. 또한 어떤 상황에서는 필요한 경우 직접 호스팅 할 수있는 능력을 제공합니다.
Kaptcha는 Simplecaptcha의 심하게 수정되고 업데이트 된 버전이며 JDK5/6을 지원합니다.
Simplecaptcha는 정말 멋지고 사용하기 쉽습니다.
다음은 JSF 2.0과 함께 Simplecaptcha를 사용하는 방법 예입니다 (홈페이지에는 JSP의 예가 있습니다).
나는 콩에 보안 문자 값을 저장하는 것을 귀찮게하지 않으며, 유효성이 있습니다.
콩 :
// 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"));
}
}
직면의 관련 세그먼트 :
<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>
즐기다 :-)
Kaptcha는 타사 보안 문자 서비스 (Recaptcha와 같은)에 의존하는 대신 자신의 보안 문자 서비스를 주최하려는 경우 Recaptcha의 좋은 대안입니다.
나는 소스를 얻을 수 있었고 (하나는 git :-이 아닌 브라우저에서 하나씩) 1.5로 빌드 할 수 있었고 JDK 1.5 버전에 나쁜 클래스 버전 오류를 던지는 데 문제가있었습니다 (이전과 함께 컴파일 될 때 발생하는 것. Java 버전은 엉망이되었습니다) 나는 내가 직접 만든 항아리를 복사 할 때 해결되었고 그 매력처럼 작동합니다. 나는 누구나 이것을 사용하도록 강력히 조언 할 것입니다. 나는 Jcaptcha를 시도했고 나는 그것을 짜증나라고 말해야합니다. 이미지의 코드를 확인하기 위해 고군분투해야합니다.