2012-04-17 4 views
0

ユーザがフォームに入力したデータを検証したいと思います。私はユーザー名とパスワードのための2つのフィールドしか持っていません。私の最初の質問は、私はjavascriptでデータをチェックし、それは正常に動作しますが、私はPHPでデータをチェックしたいので、javascriptが動作していません。 JavaScriptが動作していない場合、データはPHPコードからチェックされますが、JavaScriptが動作している場合、データはjavascriptとPHPからもチェックされます。いいですか?入力データがjavascriptでチェックされたときにphpでチェックするのを避ける方法はありますか?また、私は文字の数の入力(ユーザー名とパスワード)をチェックしています(SQLインジェクションを避けるために特殊文字、 "_"、 "。"数字と文字のみを許可しません)あなたに聞こえる?より良いバリデーションのための提案はありますか?php - javascriptの入力データの検証

ありがとうございます。

+2

javascriptが安全でないため、常にPHP側でチェックする必要があります。 –

答えて

2

あなたはである必要があります。常にユーザ入力のサーバサイド(php)検証を行います。 clientside(javascript)検証は、より良いユーザーエクスペリエンスのためにのみ有効です。また、mysql注入防止のために入力をいくつかの文字に制限するべきではありません。

+0

ありがとうございました! :)私はこの関数mysql_real_escape_string()をSQLインジェクションに使用しています。しかし、入力の文字の一部を制限する方が良いとは思わないでしょうか?私は、数字、文字、そして "_"、 "。"多少の特殊文字で十分安全かもしれません。 – anna

+0

mysql_real_escape_string()は、mysql注入を防止する良いスタートです。ユーザの入力を制限する必要はありません。しかし、そこには常にそこにも仲間がいて、それを迂回することもできますが、最初はそれが持続するはずです。 –

+0

あなたの言ったことのためにユーザー入力を制限したいと思います。たぶんmysql_real_escape_string()関数しか使用していないのではないかと思います。 SQLインジェクションを防ぐもう1つの解決策があれば良いでしょう。そのため、入力を制限することにしました。 – anna

1

両方の方法を確認することは問題ありません。 Javascriptが有効になっている場合にPHPでチェックしたくない場合は、フォームに隠しフィールドを追加してPHPでこれをチェックすることができます。

E.G.それが設定されていない場合

if(!isset($_POST['js_hidden_field'])) { 

    // Run Validation 

} 

ですから、PHP検証

+0

お勧めしますので、私は両方のチェックを行います(あなたの提案どおり)。しかし、このソリューションに感謝します。 :) – anna

+0

私の喜び! :) –

2

を実行し、隠しフィールドのチェックはい、あなたはクライアント側(JS)とサーバー側(PHP)の両方を検証する必要があります。

お客様の利便性とユーザーエクスペリエンスの向上のために、クライアントでこれを行います。

悪意のある攻撃を防ぐためにサーバー上で実行するか、またはユーザーがJSを無効にしている場合は記載したとおりにします。

2

常にサーバー側の検証を実行する必要があります。クライアント側の検証(javascriptの検証など)を無効にすることはできません。デバッギングツール(現在多くのものがブラウザに組み込まれています)を取得し、JavaScriptの検証を回避するのは簡単な練習です。

通常、間違いはなく、JavascriptとPHPの両方の場所で検証を行うことをお勧めします。

1

これは実際には良いです、あなたは私の意見で決してあまりにも多くの検証を行うことはできません。クライアント側のスクリプティングは、Web開発経験のある人なら誰でも操作できますが、サーバー側のスクリプティングではできません。

クライアント側のスクリプトの検証長所:

  • アラート彼らは
  • 自分自身を修正することができ、データを提出する前にユーザーがあなたのサイトが

サーバー側の検証のプロもう少し洗練されたに見えるのです

  • あなたが持っている検証ルールを変更することはできません
  • サーバー側の検証をオフにすることはできません。

要するに、両方を行うのは良いことですが、実際にはどちらか一方を行うよりも優れています。