3

リモートSMTPサーバーを使用して電子メールを送信するデスクトップアプリがあります。したがって、コードでは次のようなsmthがあります。

string userName = "Alex";
string pass = "123456";
sendEmail(userName, pass);

私のアプリを逆にした人は誰でも私のメールサーバーにアクセスできます。機密データ(userName、pass)が逆転しないように保護するための解決策はありますか?難読化せずに。

ありがとう、アレックス。

4

4 に答える 4

4

SMTP認証情報とその他の機密データをapp.configに移動し、セクション暗号化を利用します。

于 2012-05-09T08:02:51.733 に答える
2

アプリでユーザー名とパスワードを指定する場合は、ユーザーに公開されていると見なす必要があります。ユーザーがアプリを調べたり、ネットワーク接続を盗聴したりしないことを保証する方法は実際にはありません。

また、ファイアウォールでSMTPトラフィックをブロックし、単一のスマートホストを維持することが一般的である場合は、侵害されたマシンがスパムボットになるのを防ぎます。クレデンシャルをうまく隠すことができたとしても、このようにSMTPを使用することは信頼できない選択かもしれません。

基本的に3つのオプションがあります。

  • OSの電子メール送信サービスを使用します-ユーザーが持っている電子メールクライアントでメールを起動します。
  • 有効なSMTPサーバーを構成するようにユーザーに依頼します。
  • SMTPへの独自のリレーをセットアップし(たとえば、Webサービスとして)、悪用されていないことを確認するために追加のチェックとスロットルを追加します。

もちろん、最後のオプションは、独自のユーザーデータベースに対するユーザーの認証と組み合わせることができます。これにより、不正なユーザーをシャットダウンできます。

于 2012-05-09T08:00:50.017 に答える
0

Webサービスを使用して電子メールの本文を送信すると、ユーザーの資格情報をクライアントに公開せずに受信者に電子メールが送信されます。難読化と暗号化を使用しても、誰かがアプリケーションをリバースエンジニアリングして、資格情報にアクセスする可能性があります。難読化はセキュリティではありません。

于 2012-05-09T08:28:30.707 に答える
-1

アプリケーションを難読化してみましたか?Dotfuscator Software Servicesを試してコードを難読化してから、ユーザー名とパスワードを非表示/難読化できるかどうかを確認してください。最適なオプションは、app.configまたはweb.configファイルを使用して、暗号化またはハッシュを使用して資格情報を保存することです。

アプリケーションにクレデンシャルをハードコーディングすることは決して良い習慣ではありません。

于 2012-05-09T08:07:01.817 に答える