入力検証の一般的な方法は何ですか? つまり、クライアント側、サーバー側、またはその両方で入力の検証をチェックしますか?
また、パフォーマンスが重要である場合、クライアント側の入力検証だけで、セキュリティ リスクを引き起こすことなく Web サイトに十分でしょうか?
入力検証の一般的な方法は何ですか? つまり、クライアント側、サーバー側、またはその両方で入力の検証をチェックしますか?
また、パフォーマンスが重要である場合、クライアント側の入力検証だけで、セキュリティ リスクを引き起こすことなく Web サイトに十分でしょうか?
少なくともサーバー側の検証を常に実行してください。ユーザー エクスペリエンスを向上させたい場合は、クライアント側の検証が役立ちます。また、サーバーへの不要なリクエストを回避することもできます。
クライアント側の検証だけでは十分ではなく、たとえば JavaScript を無効にすることで簡単にバイパスできます。
サーバー側の検証を追加することから常に開始することをお勧めします。テストが完了したら、クライアント側の検証を有効にできます。
クライアント側の検証に頼らないでください!!!
正直なユーザー向けです。不正なユーザーはすぐに回避できます。
私が Javascript を止めれば、あなたのアプリをめちゃくちゃにできます。常にサーバー側の検証を入れてください...それほど難しくありません
Web フォーム
''# VB
If Page.isValid Then
''# submit your data
End If
// C#
if(Page.isValid) {
// submit your data
}
MVC
''# VB
If ModelState.IsValid Then
''# submit your data
End If
// C#
if(ModelState.IsValid) {
// submit your data
}
サーバー側の検証が機能したら、クライアント側の検証を追加します。ユーザーのエクスペリエンスを向上させます
私がお勧めすることの 1 つは、FluentValidation、xVal、およびJQueryを一緒に使用して、同じルールに基づいてクライアント側とサーバー側の検証を実行することです。
FluentValidationは、サーバー側で .net オブジェクトを検証するルール ベースのフレームワークです。これには、選択したサーバー側とクライアント側の検証フレームワークをリンクできる別のフレームワークであるxValのルール プロバイダーが付属しています。クライアント側での JQuery バリデーターの生成をサポートします
一般的には両面です。クライアント側のものは、意図的または無邪気に(noscriptの普及により)簡単にバイパスできますが、使いやすさの理由から持つ価値があります。
セキュリティ上のリスクがあるかどうか。ユーザー入力を何に使用し、現在の検証の性質は何ですか?
誰かがフォームの必須フィールドに入力したことを確認するだけの場合、セキュリティ上のリスクがある可能性は低いでしょう。
最も一般的なのは、クライアント側とサーバー側の両方の検証を使用することです。
クライアント側の入力検証だけで、セキュリティ リスクを引き起こすことなく、私の Web サイトに十分でしょうか?
いいえ、サーバー側の検証も使用する必要があります。(たとえば) firebug を使用してクライアントの検証を削除するのは非常に簡単です。明らかに、クライアント側の検証を削除した後、悪者は任意のデータをサーバーに送信できます。したがって、サーバー側の検証も強く必要です。
クライアント側の検証は非常に簡単にバイパスできるため、少なくともサーバー側の検証を使用する必要があります。
ユーザーエクスペリエンスを向上させたい場合は、クライアント側の検証も使用してください。これにより、無効なフォームがサーバーに送信されなくなるため、サーバーへの HTTP 要求の数が減るため、パフォーマンスも向上します。