クライアント/サーバ両方で二重にバリデーション

もくじ

バリデーションとは

ユーザが入力した値が規則やルールに則っているかどうかを判断する機能です。

f:id:bonoponz:20200918194820p:plain

f:id:bonoponz:20200918194828p:plain

サーバでバリデーションする理由

サーバ側は、不正な入力を検知し、下記を達成するためにバリデーションを行います。

サーバでバリデーションをしないと、悪い人間による不整合なデータが入ってしまうなどの危険もあり脆弱性に繋がります。

アプリケーションを守る

  • 予期しない動作(落ちたりとか...)を防ぐ
  • セキュリティを確保する(XSS、SQLInjection、etc...)

データを守る

  • 不正なデータが登録されないようにする(値の範囲、フォーマット、エンコーディング... データ間の整合性)

クライアントでバリデーションする理由

サーバできちんとバリデーションが行われていれば、クライアントでは最悪バリデーションはしなくてもいいかもしれません。

しかしクライアントでもバリデーションすることでUXの向上も期待できますし、本来サーバでエラーになることがすぐ気づけない!なんてことも避けられますね。

実際、入力補助のためにあると考えても問題ないかもしれません。

クライアント/サーバの両方でバリエーションしたほうが良い

サーバでバリデーションをするのは重要ですが、クライアントでも行ってより強固なアプリにしましょう。

サーバ側でしか出来ないバリデーション

  • DBを参照する
  • 日時が関係するもの
  • 他のシステムとやりとりする必要があるもの etc...

参考URL

フロント・サーバ両方にバリデーションをかける - Qiita

サーバー・クライアントの両面からかけるバリデーション - AWS上で構築するRESTfulアプリ勉強会~Web開発ワークショップ~【第7回】マニュアル - Qiita