1

C# で次のコードを使用して、Web サイトからファイルをダウンロードしています。

WebClient webClient = new WebClient();
webClient.Credentials = new System.Net.NetworkCredential("username", "password");
webClient.DownloadFile("http://example.com/file.txt", "file.txt");

ファイルは特定の基準が満たされた場合にのみダウンロードされるため、ユーザーが自分のサイトのファイルにアクセスできないようにしたい

私の注意点は、好奇心旺盛なユーザーがコードを逆コンパイルすると、彼はパスワードを見つけて、私のサイトのすべてのファイルにアクセスできるようになるということです。

パスワードを保存する安全な方法はハッシュを保存することだと読みましたが、この例でそれを実装する方法がわかりません。

パスワードを安全に保ち、ユーザーがパスワードを見つけられないようにするために必要なオプションは何ですか?

4

4 に答える 4

5

冷静な現実: プログラムに含まれる情報をこのように保護することはできません。

必須事項:この単一のプログラムが必要とする特別なファイルにアクセスするためだけのユーザー名/パスワードを選択してください。「私の Web サイト全体にアクセスする」ユーザー名とパスワードではありません。

ただし、ここでは、少し障害を追加しているだけであることを知っておいてください。誰でもあなたのプログラムを調べて、ユーザー名とパスワードを見つけることができます。

これを行う唯一の「正しい」方法は、ユーザー自身の資格情報に基づいて行うことです。たとえば、自分のシステム内のユーザー名とパスワード。次に、その情報に基づいてアクセス権を付与する必要があり、プログラムはアクセスを促す必要があります。

于 2012-08-27T17:13:03.827 に答える
2

あなたは単にしません。ユーザーは何かをするためにパスワードを与えますが、その逆ではありません。

ユーザーが「特定の条件」を証明する必要がある場合は、それらの特定の条件の証明をサーバーに渡し、ダウンロードを許可するかどうかを決定させます。

于 2012-08-27T17:14:15.683 に答える
1

それを防ぐ方法はありません。プログラムが条件 X でファイルにアクセスできる場合、ユーザーはプログラムをだまして条件 X にし、何があってもファイルを取得できます。難しくすることはできますが、不可能にすることはできません。

于 2012-08-27T17:12:42.650 に答える
0

データがプログラム自体にある場合は、それらがすでにユーザーに公開されていると見なすことができます。これに対抗するためにいくつの対策を講じても、資格情報がユーザーのコンピューターにある場合は、それを回避する方法を見つける可能性が常にあります。

プログラムのログインフォームを実装し、ユーザーにログイン情報を提供することができます。次に、ユーザーがログイン情報を入力したら、サーバー側で資格情報が存在するかどうかを確認し(通常はデータベースをチェックインして)、一致する場合はファイルを送信します。

しかし、いつものように、ユーザーがログイン情報を他の人と共有するだけの問題などがあります。

于 2012-08-27T17:18:22.077 に答える