10

入力検証の一般的な方法は何ですか? つまり、クライアント側、サーバー側、またはその両方で入力の検証をチェックしますか?

また、パフォーマンスが重要である場合、クライアント側の入力検証だけで、セキュリティ リスクを引き起こすことなく Web サイトに十分でしょうか?

4

6 に答える 6

11

少なくともサーバー側の検証を常に実行してください。ユーザー エクスペリエンスを向上させたい場合は、クライアント側の検証が役立ちます。また、サーバーへの不要なリクエストを回避することもできます。

クライアント側の検証だけでは十分ではなく、たとえば JavaScript を無効にすることで簡単にバイパスできます。

サーバー側の検証を追加することから常に開始することをお勧めします。テストが完了したら、クライアント側の検証を有効にできます。

于 2010-07-03T19:22:05.890 に答える
4

クライアント側の検証に頼らないでください!!!
正直なユーザー向けです。不正なユーザーはすぐに回避できます。

私が 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
}

サーバー側の検証が機能したら、クライアント側の検証を追加します。ユーザーのエクスペリエンスを向上させます

于 2010-07-03T19:36:01.490 に答える
4

私がお勧めすることの 1 つは、FluentValidationxVal、およびJQueryを一緒に使用して、同じルールに基づいてクライアント側とサーバー側の検証を実行することです。

FluentValidationは、サーバー側で .net オブジェクトを検証するルール ベースのフレームワークです。これには、選択したサーバー側とクライアント側の検証フレームワークをリンクできる別のフレームワークであるxValのルール プロバイダーが付属しています。クライアント側での JQuery バリデーターの生成をサポートします

于 2010-07-03T22:11:08.540 に答える
2

一般的には両面です。クライアント側のものは、意図的または無邪気に(noscriptの普及により)簡単にバイパスできますが、使いやすさの理由から持つ価値があります。

セキュリティ上のリスクがあるかどうか。ユーザー入力を何に使用し、現在の検証の性質は何ですか?

誰かがフォームの必須フィールドに入力したことを確認するだけの場合、セキュリティ上のリスクがある可能性は低いでしょう。

于 2010-07-03T19:23:05.657 に答える
1

最も一般的なのは、クライアント側とサーバー側の両方の検証を使用することです。

クライアント側の入力検証だけで、セキュリティ リスクを引き起こすことなく、私の Web サイトに十分でしょうか?

いいえ、サーバー側の検証も使用する必要があります。(たとえば) firebug を使用してクライアントの検証を削除するのは非常に簡単です。明らかに、クライアント側の検証を削除した後、悪者は任意のデータをサーバーに送信できます。したがって、サーバー側の検証も強く必要です。

于 2010-07-03T19:38:55.803 に答える
1

クライアント側の検証は非常に簡単にバイパスできるため、少なくともサーバー側の検証を使用する必要があります。

ユーザーエクスペリエンスを向上させたい場合は、クライアント側の検証も使用してください。これにより、無効なフォームがサーバーに送信されなくなるため、サーバーへの HTTP 要求の数が減るため、パフォーマンスも向上します。

于 2010-07-03T19:33:33.453 に答える