Webサーバーにテキストファイルをアップロードする単純なC#アプリケーションを作成したいと思います。ただし、これを行うには、ユーザー名とパスワードをコードに含める必要があります。Visual Studioに含まれている難読化ツールを使用してみましたが、無料の逆コンパイラーで逆コンパイルした後でも、それらを見つけることができました。
これは可能ですか?
ありがとう!
Webサーバーにテキストファイルをアップロードする単純なC#アプリケーションを作成したいと思います。ただし、これを行うには、ユーザー名とパスワードをコードに含める必要があります。Visual Studioに含まれている難読化ツールを使用してみましたが、無料の逆コンパイラーで逆コンパイルした後でも、それらを見つけることができました。
これは可能ですか?
ありがとう!
おそらく、ここで基本を再考する必要があります
代わりに、サーバーに何を送信するかに関係なく、ビジネスケースに影響を与えないようにサーバーを構成する必要があります。
そのユーザー名/パスワードを何に使用していますか?
つまり、ユーザー名とパスワードがユーザーのコンピューターにあり、あるプログラムがそのデータを暗号化されていない形式で操作する必要がある場合、ユーザーがデータを表示できないことを保証することは論理的に不可能です。したがって、答えはノーです。それは論理的に不可能です。
おそらく、非常に制限された権限を持つWebサーバー上に別のユーザーを作成し、代わりにそれを使用することができますか?そうすれば、ユーザーがアプリケーションから資格情報を取得できたかどうかについて心配する必要がなくなります。
いいえ。
ユーザーがコードを逆コンパイルしてその中のすべてを見るのを防ぐ唯一の方法は、ユーザーにコードを提供しないことです。つまり、クライアントではなくサーバー(管理下)にコードを配置します。
認証を必要とせずに、HTTP POSTなどを介してコンテンツを送信できるサーバー側(WCFエンドポイント、RESTサービスなど)を作成することを検討してください。その場合、解読するパスワードはありませんが、サーバー側のコードは、送信されるコンテンツに何が起こるかを完全に制御します。
いいえ。暗号化することはできますが、どこかから復号化キーを取得する必要があります。十分に判断された誰かがコードを逆コンパイルして、そのキーがどこにあるかを把握できる可能性があります。
1回限りのユーザー名とパスワードを返すWebリクエストを作成できる可能性があると思います。そのため、アプリケーションはそれを呼び出し、user / pwdを取得し、それを使用してアップロードします。使用したら、そのアカウントを無効化/削除する方法が必要になります。
おそらく私の解決策はあなたの懸念が何であるかには多すぎるので、より多くの詳細があなたのために働く可能性が高い答えにつながるかもしれません。
ソースコードに含める必要がありますか?ログイン時にコンピューターでこれを実行するだけでよい場合は、パスワードをファイルに保存し、ファイルのアクセス許可で保護することができます。
どんなアクセスについて話しているのですか?アップロードを行うためにユーザーとパスワードが必要な場合は、最終的にはコードでアクセスでき、プロキシ/ネットワークリスニングツールを使用するとさらに簡単になります。アップロード機能のみを持つ(他のファイルを読み取らないなど)アプリケーションの特定のユーザーを作成することは可能でしょうか?
クレデンシャルを安全かつ確実に保存するためにコードに依存することはできません。ユーザー名とパスワードをパラメーターとしてプログラムに渡すことを検討し、ユーザーがそれらにアクセスできないように、適切なオペレーティングシステムのセキュリティ(Windowsセキュリティなど)に依存する必要があります。
Windowsクレデンシャルを制御できない環境にいる場合は、SSLなどの安全な接続を介したサーバー側の承認を検討する必要があります。