2

CRUD 環境で、ユーザーの連絡先のリストを表示しているとします。Web サイトは、ユーザーに「編集」および「削除」機能を提供する必要があります。各連絡先はデータベース テーブルのレコードを表し、レコードの識別子をブラウザ (クライアント) に渡す必要があります。

私のアプリケーションでは、通常、テーブルに自動インクリメント識別子フィールドがあり、その値をブラウザに渡します。したがって、ユーザーが編集または削除したい場合は、その識別子とともにサーバーにリクエストを送信します。そうすれば、テーブル内のレコードを見つけることができます。

しかし、セキュリティとプライバシーが心配です。通常、私は他のユーザーが他のユーザーのレコードにアクセスすることを許可していませんが (Duh)、ブラウザに整数だけを渡すのは好きではありません。

私の知る限り、大企業はこれを行うために 40F0C923BACECBF40C4CAA465D0E4DB0 のような長い一意の識別子を提供していますが、今回は新しいレコードを作成する前にその値が使用されているかどうかを確認する必要があります。

この質問をデータベースセクションまたはここにどこに質問すればよいかわからなかったので、ここに質問しました。どうやってこれを行うことができますか?言い換えれば、それは専門的にどのように行われますか?

4

1 に答える 1

0

OWASP トップ 10 違反のようです。具体的には、安全でない直接オブジェクト参照。すべてのデータベース レコードには所有権 ID が必要です。ユーザーのIDをセッション状態に保存し、ユーザーがそれらに属するレコードにアクセスしていることを確認できるようにします。

于 2012-10-27T01:19:16.683 に答える