-1

認証コードを含むフォームを作成しています。確認コードは画像ですよね? (間違っていたら教えてください。) ユーザーが正しい確認コードを入力していることを確認する方法。(つまり、JavaScript で検証コードを検証する方法を意味し、ユーザーが正しい大文字と小文字を入力していることを確認する必要さえあります。) またはサーブレットにある場合もあります。ここに、htmlページの私のコードがあります。

<html><body>
<script type="text/javascript"> 
function ValidateForm(frm) {
if (frm.CaptchaCode.value == "") {alert('Enter web form code.');frm.CaptchaCode.focus();return false;}  
return false;
}
function ReloadCaptchaImage(captchaImageId) {
var obj = document.getElementById(captchaImageId);
var src = obj.src;
var date = new Date();
var pos = src.indexOf('&rad=');
if (pos >= 0) { src = src.substr(0, pos); }
obj.src = src + '&rad=' + date.getTime();
return false; }
</script>
<i>Enter web form code*:</i>
<input id="CaptchaCode" name="CaptchaCode" type="text" style="width:80px; border:1px solid #999999;" maxlength="6" />
<a href="http://www.SnapHost.com"><img id="CaptchaImage" alt="Web Form Code" title="Anti-spam web forms"
style="margin-left:20px; border:1px solid #999999"
src="http://www.SnapHost.com/captcha/WebForm.aspx?id=HQWK4M77B9KH&ImgType=2" /></a>
<br /><a href="#" onclick="return ReloadCaptchaImage('CaptchaImage');">
<span style="font-size:12px;">reload image</span></a>
</body></html> 
4

1 に答える 1

0

まあ、あなたはできません。クライアント側で利用可能であってはなりません。そうしないと、ロボットが JavaScript も実行する可能性があり、あなたの作業は無意味になります。

ただし、次の 2 つのことを行うことができます。

AJAX リクエスト

ユーザーが入力したコードをサーバーに送信すると、サーバーは回答を検証して「はい」または「いいえ」を返します。
長所:

  • 簡単
  • 試行するたびにコードを再生成できます

短所:

  • 少し帯域幅がかかります
  • ラグが発生すると、AJAX 呼び出しが読み込まれるまでに時間がかかる場合があります

非対称暗号化

これは少し脆弱ですが、より洗練された方法です。一般的には、キャプチャ コードを使用してハッシュ ( などですがmd5、より強力なアルゴリズムをお勧めします) を送信します。ご存じのとおり、ハッシュ化されたデータは元に戻すことができません。したがって、JavaScript コードでは、ユーザーが入力したコードをハッシュし、それをページで送信したハッシュと比較する必要があります。

長所:

  • ユーザーは状態について即座に通知されます
  • 帯域幅の問題なし

短所:

  • クライアント側でハッシュ関数を実装する必要があります
  • 同じコードを検証する試行回数に制限はありません。これは、キャプチャを破ることが、実際のハッシュ アルゴリズムを破ることと同じくらい難しいことを意味します (まったく心配する必要はありません)。
于 2013-09-25T22:20:50.163 に答える