2

セキュリティの観点からGUIDの使用に関するアドバイスを求めています。ASP.Netアプリケーションを開発しました。これにより、ユーザーは、Webサーバー上にないドキュメントや写真などの一部の資料にアクセスできます。これらはファイルサーバーに保存されます。リソースのIDを取得し、System.IO.FileInfoを使用して開く「GetResource.aspx」ページがあり、それを応答ストリームに書き込んで返します。

したがって、GetResource.aspx?id = 123は、たとえば、ユーザーがアクセスできる画像を返します。もちろん、ユーザーはURLをGetResource.aspx?id = 456として手動で入力することもできます。その場合、そのIDを持つ画像/ドキュメントなどが返され、アクセスする権限がない場合があります。

したがって、明らかに整数IDを使用することは適切ではありません。IDとしてGUIDを使用すると、ユーザーが手動で「GetResource.aspx?guid = {推測されたGUID}」と入力できず、スクリプトを使用する場合を含め、有効なリソースにアクセスすることを期待できないほどの「ランダム性」が得られます。それは毎秒多くのランダムな推測をしましたか?

または、Session変数からユーザーのIDを決定し、ユーザーが実際に要求されたリソースにアクセスできると判断して、それを返す以外に方法はありません(これを書いていると、私はますます確信しています! )。

ありがとう

4

3 に答える 3

9

ユーザーを認証し、リソースへのアクセスが許可されているかどうかを確認することに代わるものは確かにありません。ここで提案しているのは、(誤ってまたは故意に) 閲覧が許可されていないドキュメントの有効な ID をユーザーが見つけにくくする方法です。

GUID は確かに十分に大きいので、実際には「偶発的な」有効な ID を取得することはありません。これにより、承認なしの GUID チェックは、誰も積極的に破壊しようとしない限り、システムをうまく機能させます。一方、承認チェックは、アクティブな攻撃者が存在する場合でもうまく機能するシステムです (もちろん、これは攻撃者が何を実行できるかによって異なります)。

アプリケーションの性質に応じて、2 つのアプローチのいずれかを選択する必要があります (アプリケーションは公開されていますか? ユーザーは既知であり、ユーザーの行動に責任がありますか? 「セキュリティ侵害」はどの程度深刻なものでしょうか?)。

于 2013-02-21T11:33:37.073 に答える
6

保護されたコンテンツである場合は、やみくもに提供する前に、ユーザーが承認されているかどうかを判断する必要があります。

GUID はある程度は役に立ちますが、URL の推測が難しくなるため、引き続き GUID を使用することをお勧めします。ただし、URL は引き続き共有できます (誤って共有することもできます)。誰がリクエストを行うかに関係なく、とにかくコンテンツを提供するだけの場合は、実際の保護はほとんどありません.

于 2013-02-21T11:33:27.770 に答える
0

コンテンツが制限されており、個人データがあると思われる場合は、ユーザー名とパスワードを使用する必要があります。

于 2013-02-21T11:35:14.740 に答える