2012-02-03 19 views
0

WebアプリケーションでJCaptchaを実装してもうまくいきますが、ブラウザのクッキーがブロックされても常に失敗してfalseを返します。クッキーがブロックされたときにJCaptchaが失敗しました

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 



     String userCaptchaResponse =request.getParameter("jcaptcha"); 
     boolean captchaPassed = SimpleImageCaptchaServlet.validateResponse(request, userCaptchaResponse); 

     if(captchaPassed){ 
     System.out.println("success!!"+userCaptchaResponse); 
     RequestDispatcher rd=request.getRequestDispatcher("Result.jsp"); 
     rd.forward(request, response); 

     //response.sendRedirect("Result.jsp"); 

     }else{ 
      System.out.println("failure!!"+userCaptchaResponse); 
      response.sendRedirect("Index.jsp"+"?id=false"); 

     } 

    } 

およびJSPページ内のコードは

<tr align="center"> 
<td align="right" width="33%"><img height="60px" width="140px" src="jcaptcha.jpg" /></td> 
<td align="left" width="33%" valign="middle"><input type="text" name="jcaptcha" value="" /></td> 
</tr> 

が、私は私のキャプチャは関係なく、クッキーがブロックされているかどうかにない仕事をしたいです!!!次のよう

サーブレットのコードがあります Javaでcaptchaを実装するための、この方法または他の方法に対する解決策はありますか? jdk 1.7とtomcat 7を実行時環境として使用しています。

答えて

1

captchaルックアップの問題は、ユーザーセッションに依存していることです。それは私の意見では設計上の欠陥です。クッキーがブロックされている場合、セッションはユーザーにリンクされません。

他のライブラリがあります。 SimpleCatcha。またはrecaptchaのような他のサービス。

あなたはあなたがセッション依存しない擬似アルゴリズムとして、このようにそれを実装するかもしれませんキャプチャ生成ライブラリがあれば基本的には:キャプチャを含むすべてのフォームについて

を:

  • を一時的にキャプチャを生成します
  • 推測しにくい固有の識別子を生成します(おそらくuuidを使用します)。
  • ユーザーが、彼はあなたがこのペアをルックアップかもしれない推測とUUIDを提供するフォームを送信した場合、リンク正解サーバ側でユニークidentfierと一時的に
  • それを持続するには、生成されたフォーム
  • に一意の識別子を提供しますあなたのサーバー側で。
  • UUIDと画像を無効にするか、ユーザーが正解を入力していないかを確認します。

これはあなたが事前に計算captchaのを保持するために、固定サイズのFILOコンテナ/キューを埋めるために、バックグラウンド・プロセスを持つように考えるかもしれませんパフォーマンスの観点から、遅すぎる場合。

関連する問題