39175


【質問】  
クライアント側で設定でき、サーバ側でもクライアント側でも認識できる情報の保管先、かつ改ざんの可能性が低い達成方法をご教示ください。

・ページ間でその情報を共有する必要はございません。

－質問の背景－  
画面内容がクライアント側（DBとの比較Ajax含む）で一通り精査された上、問題のない状況と判断された画面のみがサーバ向けに渡ってくる（SUBMITボタンが押下される）動作を達成したいと考えています。

これらけん制結果を、独自に設けるエラーコードとして『どこかに保存できないか』と思い 問い合わせさせて頂いております。

『保存の用途』  
①SUBMITボタンを、エラーが一切ない状況の時のみ = 確保されたエラーコードが一切ない状況の時のみ  
画面へ表示させたい。

②サーバ側にリクエストが渡ってきても、一応にエラーコードが一切存在していない状態を確認した上で処理を進行させたい。

－最後に－  
こういたケースでは、INPUT TYPE="hidden"の項目を用い、サーバ側と情報共有することも 強ち間違いではないのかな？と思いましたが  
けん制結果のエラーコードが、他人から書き換えられたら、一生サーバ側にリクエストが渡ってこない、と、ゾッとしてしまい、危険性を探る意味で問い合わせさせて頂きました。

不快な思いをされた方、非常に申し訳ありませんでした。引き続き、よろしくお願い申し上げます。


CC BY-SA 3.0
2017-10-30T05:32:18.697
39145
2017-10-31T07:23:46.230
2017-10-30T10:56:04.960
25696
25696
question
javascript php html jquery
送信前に検知するエラー(独自のエラーコードの格納先)は、どこに保管すべき？


ここで言われているエラーは、エンドユーザーによるデータ入力時のエラーであることを前提としてお話しします。  
私個人の考え方で申し訳ないですが、「エラーの詳細についてはどこにも保存しておく必要がない」が回答です。

エラーの詳細をどこかに保存し、保存されているエラーが存在しなければSubmit、および保存できるようにしたいという風にお見受けします。  
しかし、このフローがそもそも誤りで、エラーチェックはSubmitの直前とデータ保存の直前の両方で全項目に対してその都度行い、その際にエラーがあればSubmit、または保存を中止し、ユーザーに入力内容の修正を促すべきです。  
その際はユーザーにエラーメッセージを適切に提示してあげます。

もちろん、クライアントサイドの項目に対するblurイベントのたびに、その項目1件をチェックすることはUX上望ましいものです。  
しかし、クライアントサイド側はいくらでも改ざんが可能で、その気になれば全く別のドメイン上のページからデータをPOSTする、なんてことも可能です。  
このことからも最も重要なのはデータが送信され、受け取ってからのサーバーサイド上でのデータの整合性チェックということになります。(コメントでhtbさまが言われているのはこのことだと思います。)

個人的な考え方にのっとった回答のため、不適切であれば削除いたします。


CC BY-SA 3.0
2017-10-31T07:17:31.580
39175
2017-10-31T07:23:46.230
2017-10-31T07:23:46.230
17014
17014
39145
answer