0

重複の可能性:
JavaScript:クライアント側とサーバー側の検証

私はPHPWebアプリケーション開発の初心者です。最近、イントラネットで使用するWebアプリケーションを開発しましたが、このシステムを使用しているユーザーは約25人です。システム内のすべてのHTMLフォームは、JavaScriptとjQueryライブラリを使用して検証され、クライアントマシンはJavaScriptに対応しています。サーバー上の各フォームを再度検証する必要がありますか、それともJavaScript検証で十分ですか。

4

6 に答える 6

3

簡単に言えば、JS の検証だけでは十分ではありません。ユーザーは、クライアントで JS を非常に簡単に無効にして、検証をバイパスできます。AJAX を使用してユーザー データを送信している場合でも (したがって、JS を有効にする必要があります)、賢いユーザーはサーバーへの独自の HTTP 要求を簡単に作成し、検証をバイパスすることができます。

この目的のために、システムに入力されたすべてのデータが検証されることを完全に保証したい場合は、サーバー上で行う必要があります。

于 2012-10-15T17:16:45.037 に答える
1

Javascriptはオフにできるため、ロジックから、クライアントは信頼できないということになります。したがって、サーバー側で再度検証する必要があります。

このような質問のために覚えておくべき基本的なルール:

クライアント側のセキュリティはそうではありません。

于 2012-10-15T17:15:13.150 に答える
1

Javascript の検証だけでは不十分です。curl などのソフトウェアを使用してクライアント側の JS 検証をバイパスし、独自の HTTP POST 要求を生成するのは簡単です。

于 2012-10-15T17:15:48.690 に答える
1

送信されたデータに何が起こるかによると思いますが、セキュリティ上の理由から、サーバー側で入力を検証することは常に良い習慣だと思います.

于 2012-10-15T17:15:49.780 に答える
1

これを試してみてください。最も簡単です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<style type="text/css">
* { font-family: Verdana; font-size: 96%; }
label { width: 10em; float: left; }
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; }
p { clear: both; }
.submit { margin-left: 12em; }
em { font-weight: bold; padding-right: 1em; vertical-align: top; }
</style>
 <script>
  $(document).ready(function(){
  $("#commentForm").validate();
  });
  </script>

</head>
<body>


 <form class="cmxform" id="commentForm" method="get" action="">
 <fieldset>
   <legend>A simple comment form with submit validation and default messages</legend>
  <p>
 <label for="cname">Name</label>
 <em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" />
  </p>
  <p>
    <label for="cemail">E-Mail</label>
  <em>*</em><input id="cemail" name="email" size="25"  class="required email" />
  </p>
  <p>
 <label for="curl">URL</label>
 <em>  </em><input id="curl" name="url" size="25"  class="url" value="" />
  </p>
  <p>
    <label for="ccomment">Your comment</label>
    <em>*</em><textarea id="ccomment" name="comment" cols="22"  class="required">      </textarea>
  </p>
   <p>
    <input class="submit" type="submit" value="Submit"/>
   </p>
 </fieldset>
 </form>
 </body>
 </html>

ハッピーコーディング!!

于 2012-10-16T12:30:48.030 に答える
0

はい、サーバー側ですべてのデータを検証する必要があります。Javascript の検証は信頼できません。

于 2012-10-15T17:16:03.610 に答える