2017-01-19 9 views
1

私はPHP codeigniterフレームワークを使用しています。私は、セキュリティに関連した質問がある inspect要素を使用してフォームIDを削除すると、Jqueryの検証が削除されます

$('#form_id').validate({ 
    rules here, 
    messages here 
}); 

下のよう jQuery validationsを使用しました。もし、フォーム要素をinspect要素で削除すると、jqueryバリデーションは実行されません。私はそれがクライアント側の検証を使用して処理することができます知っている。他の解決策があればユーザーがフォームIDを削除できないように考えてください

+1

データは、サニタイズされ、サーバー側で検証されている必要があります。常に。データのクライアント側の検証は、ユーザーにエラーをより速く表示するためにはいいツールですが、この「検証済み」データは信頼できません。 – Dacklf

答えて

1

誰かがHTMLを削除するのを止める方法はないと思いますが、フォームIDと入力がそこにあるかどうかを確認できますまず、あなたの検証の残りの部分の前に...のような

何か:

$("form").submit(function(event){ 
    if ($(this).attr("id") != 'form_id') { 
     event.preventDefault(); 
     alert("Missing or Altered Form ID"); 
    } 
    if (this.FirstName === undefined) { 
     event.preventDefault(); 
     alert("Missing Input Fields"); 
    } 
}); 

は**姓は入力の名前です:原因クライアント側

<input type="text" name="FirstName" value="Mickey"> 
+0

ありがとうございます。ニースの解決策。それは期待どおりに動作します。 – hrishi

1

検証は必須ですが、「セキュリティ」に関しては、ユーザーを信頼しません。あなたが言及したように、ユーザーは検証されたデータとして任意のデータを送信することができます。したがって、最良のソリューションは、バックエンド/サーバー側の検証で同じデータを検証することです。 CodeIgniterので

は、ユーザーが求めているあなたを想定してフォームID

を削除することはできませんので

は、他のソリューションであるあなたがあなたのポイントについてhere

を見ることができる素敵な検証ライブラリが付属していますこれはJavaスクリプトに関連しており、答えはNOです。 Javaスクリプトはクライアント側/ユーザーブラウザ上で実行されるため、フォームIDを変更または削除する方法があり、ユーザーがスクリプトを編集することができないため、ユーザーから何が得られるかを保証することができません上記のように、ソリューションはバックエンド検証を行い、これが役立つことを願っています。

関連する問題