3

クライアント側の検証 (jQuery で記述) を多用する長いフォームがあります。JavaScript が無効になっているユーザーがフォームを送信できないようにするために、jQuery によって "javascript_enabled" 値が入力される隠しフィールドを含めました。ブラウザーで JS が無効になっている場合、フィールドは空白のままになり、フォームは送信されません。

問題は、これで十分で安全だと感じるか、それともすべてのフィールドにもサーバー側の検証を含める必要があるかということです。

4

4 に答える 4

8

いいえ。クライアント側の検証は、サーバーを保護するためではなく、ユーザーの快適さのためにのみ行われます。

すべてのクライアント側のアクションは、ユーザーが簡単に変更できます。

サーバーを保護するには、サーバー側の検証を追加する必要があります。

于 2012-05-05T09:56:11.430 に答える
6

どの程度?なし。クライアント側の検証にまったく依存しないでください。クライアント側の検証は、純粋に UX を目的としています。

真の検証は常にサーバー上で行われます。

于 2012-05-05T09:56:19.647 に答える
4

上記の回答はすべて有効です。いくつかの点を追加したいだけです。

クライアント側

  • クライアント側の検証を使用すると、サーバーへの追加のリクエストを必要とせずに、ユーザーに即座にフィードバックを提供できます (トラフィックの低下)。

  • クライアント側の検証は簡単にバイパスできます。(JavaScript、カスタム HTTP リクエスト、CURL などを使用したアクセスを無効にする)

サーバ側

  • バイパスできません (悪用可能なコードを残さない限り)

  • サーバー側の検証を適切に行うことで、XSS や SQL インジェクションなどの潜在的な脅威を防ぐことができます。(他のユーザーのデータを取得したり、データベースを破壊したりする可能性があります)

これがどのように変わると私は信じていますか

WebSocket プロトコルのさらなる開発と、より広く使用されることを楽しみにしています.WebSocket は双方向 (全二重) 接続​​を可能にします。キーが入力フィールドに入力された時間。このアプローチにより、クライアント側の検証が不要になることを願っています!

于 2012-05-05T10:17:46.000 に答える
0

サーバー側の検証は必須です。クライアント側の検証は、サーバーへの往復のオーバーヘッドなしで、できるだけ多くのことを実行する必要があります。

于 2012-05-05T10:01:58.287 に答える