2

私のウェブサイトに登録フォームがあり、生年月日用の3つの入力ボックスがあり、このようにコード化されています...

<input name="dd" id="dd" type="text" value="DD" size="2" />
<input name="mm" id="mm" type="text" value="MM" size="2" />
<input name="yyyy" id="yyyy" type="text" value="YYYY" size="4" />

次に、送信時に実行されるJavaScript検証ページがあります。このページでは、フィールドが空ではなく、特定の数値の間にあることを確認します。たとえば、Day
の場合は1〜31です。「dd」フィールドのJavaScriptは次のとおりです。

var nulld=document.forms["create"]["dd"].value;
if (nulld==null || nulld=="")
  {
  alert("Please enter a day between 1 and 31");
  return false;
  }
var dd=document.forms["create"]["dd"].value;
if (dd >= 1 && dd <= 31)
  {}else{
  alert("Please enter a day between 1 and 31");
  return false;
  }

だから私はこのコードを持っていますが、誰かがこのコンピューターでJavaScriptを無効にしていて、間違ったデータで大量のアカウントを作成していることに気づきました。これを防ぐにはどうすればよいですか?または、JavaScriptが無効になっているかどうかをチェックするコードを追加し、次のようなエラーページに転送する唯一の方法です...

<noscript><meta http-equiv="refresh" content="1;url=nojavascript.html"></noscript>

ユーザーがJavaScriptなしでアカウントを作成しても、検証を行うことができる別の方法はありますか?

4

3 に答える 3

9

JavaScriptの検証は、サーバーに送信するデータが拒否されることをユーザーにすばやく通知することだけに役立ちます。

システムに入るものを制御することはできません。データの処理を開始する前に、データがサーバー上で適切であることを確認する必要があります。

于 2012-08-08T08:22:14.243 に答える
7

JavaScriptをこれまでよりも「強力」にすることを心配する必要はありません。JavaScriptはもちろん、ブラウザを使用しなくてもそのフォームを送信できます。サーバー側でデータを検証し、間違っている場合は拒否する必要があります。

javascriptの検証は、javascriptを有効にしている人にとっては便利なだけなので、サーバーにリクエストを送信しなくても迅速にフィードバックを得ることができます。

サーバー側の検証を実装するときは、可能な限り強力にすることを検討してください。たとえば、JavaScript検証は無効な日付を通過させます。

于 2012-08-08T08:22:11.917 に答える
2

サーバー上で重複した検証が必要です。

サーバー側の検証は堅実である必要があります。ユーザーが悪意を持っている可能性があり、クライアント側を完全に制御していると想定できるため、不正なアクティビティを防止する必要があります。

クライアント側の検証は、ユーザーの便宜のためにのみ行われ、システムのセキュリティには何の役にも立ちません。サーバーから検証を取得する時間を無駄にするブラウザーフォームを停止するためにあります。

于 2012-08-08T08:23:25.477 に答える