1

Ajax リクエストを安全にするのに苦労しています。問題はデータの改ざんです。私はこの問題について読みましたが、クライアントからの情報を決して信用しないように勧められています。フィドラーまたはそのようなツールを使用して非常にうまく変更できます。サーバー側でも検証する必要があります。しかし、私の質問は検証方法です。

一例を見てみましょう。データベースに従業員情報があり、1 つのメソッド GetEmployeeDetailByEmployeeId を公開したとします。従業員がこの要求を行う前に、ユーザー ID とパスワードで認証され、このタイプのユーザーがこの要求を行うことが許可されているかどうかが承認されます。

しかし、ある従業員が他の従業員の employeeId を与えると、実際には、彼が見るはずのないデータを取得してしまいます。この問題を解決するには、2 つの解決策があります。 1. データベースに対してリクエストをチェックする必要があります。その人がリクエストした情報がその人のためのものなのか、それとも彼がその人のマネージャーなのかを確認する必要があります。コールを拒否する必要があります。

最初のアプローチは、データベース要求を行い、レコードの関連付けを見つける必要があるパフォーマンス集約型であり、開発コストも追加されます。

この種の問題を解決するためのより良い解決策はありますか?

4

1 に答える 1

1

明らかに、バックエンド側でチェックする必要があります。そうしないと、アプリケーションが子供によって悪用される可能性があります。

アップデート

バックエンドに承認メカニズムを実装する必要があります。最初に権限を読み込んだ後、それをユーザーセッションに追加できるため、毎回データベースを検索する必要はありません。必要なのはタスクに必要な権限に対してユーザー権限を確認します。

もっと

認証メカニズムを実装するには:目標、userそれ自体のプロファイルsupervisorを表示できますが、彼の内の全員を表示できますdepartment

  • userAはuser_id、セッションですでにロードされています。user_id = 123
  • userAは自分の情報のみを要求できるためif (user_id == req_user_id)、情報を表示します。それ以外の場合はエラーを表示します。
  • userBの許可値はです。それでは100彼に電話しましょうsupervisor。今if (user_id == req_profile_id)真実ではありません。許可を確認します。この特定のタスクのタスク権限が10そうif (user_perm >= task_perm)だとすると、先に進んで部門を確認し、要求されたユーザーと現在のユーザーの両方が同じ部門にいる場合は情報を表示し、そうでない場合はエラーを表示します。

これはあなたの情報に基づいて機能するはずです。

于 2013-01-10T11:13:50.703 に答える