私は、私たちのサーバーの1つにコンソールアプリケーションをリリースして、毎日タスクスケジューラによって実行されようとしています。特定の条件に基づいて、アプリケーションはOffice 365を通じて選択したユーザーに電子メールを送信します。ユーザーに電子メールを送信するには、もちろん、電子メールアカウントの資格情報を使用する必要があります。パスワードを内部コンソールアプリケーションに埋め込む
私たちのサーバーの内部アプリケーションであることを考えれば、コードセーフにユーザー名とパスワードを埋め込んでいますか?そうでない場合は、これを安全に回避するためのベストプラクティスは何ですか?
それが助け場合は、これは(C#で書かれた)電子メール機能のために私のコードです:
String userName = "[email protected]";
String password = "myPassword";
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress(user.getEmail()));
msg.From = new MailAddress(userName);
msg.Subject = "My Subject";
msg.Body = "My message";
msg.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.Host = "mail.office365.com";
client.Credentials = new System.Net.NetworkCredential(userName, password);
client.Port = 587;
client.EnableSsl = true;
client.Send(msg);
編集:私は、管理者だけが、この特定のサーバーへのアクセス権を持っていることを追加する必要があります。
なぜあなたはApp.Configの中のパスワードを暗号化してそこから読まないのですか?.Confgセクションを暗号化する方法についてのGoogle検索はハードコーディングよりも簡単にコードをリファクタリングするので、オブジェクトの自動廃棄は 'using(){}'構造体を使用します – MethodMan
いいえ、これは安全ではなく、侵害されたパスワードの場合は柔軟性がありません。これらの値は、インストール/最初の実行時に構成として収集する必要があります。 – spender
明確にするために、管理者だけがこの特定のサーバーにログインするためのアクセス権を持っています。 –