WebApplicationフロントエンドValidation
WebApplicationフロントエンドValidation
フロントエンドValidation
「君は新人だから知らないと思うけどリクエストが改竄されることもある。フロントエンドValidationは安全ではない」
当然すぎる話ですが
まれによく聞く
WebApplicationフロントエンドValidation
WebApplicationフロントエンドValidation
- セキュリティ的な意味ではない
- ユーザビリティの一種
- できるだけ早く間違いに気づいてほしい
(パスワードなん文字まで入力できるかとか)
- アプリケーションとしての制約を行う
- サーバサイドでも同じ制約をかける
問題
ロジックの分散
ロジックの分散
- クライアントとサーバでValidationが別れる
- 同じロジックをそれぞれ実装することも。。。(辛い)
- それぞれ言語が違うと微妙に差異があったり。。。
- JSONとかで共通形式で持つのも辛い
解決法
ValidationAPI
ValidationAPI
- サーバサイドにValidation専用APIを作る
- クライアントで入力内容を随時APIに投げる
- サーバでも内部で同じAPIを使う
- Validationロジックはそこに集約する
問題点
問題点
- リアルタイムでエラーを出したい場合は?
(textareaのmaxlenghtとか)
- 頻繁な通信はスマホ環境だとバッテリー的に辛いのでは
- エラー文言はどこに出す?
(フォームが複雑だと共通化しにくい。エラーメッセージ毎に指定するとhtmlに依存する)
問題点
- HTML5 form validationとの連携は?
(htmlに書くとAPIのロジックと重複するのでは)
- どこまでをJSで実装するか
(途中の入力内容によってformを出現させるとかどうする?)
- エラー文言どうする?
(多言語かとか)
簡単なフォームならあんまり問題無いです
Validationをどっちでやるか?(サーバサイド or クライアントサイド)
クライアントサイドもやらなくていいならやりたくない!!!!!
ご清聴ありがとうございました