メールを送信する簡単なアプリケーションを作成しようとしています。私はクラスを使用MailMessage
します。動作するにはログインとパスワードが必要です。SmtpClient
SmpClient
- ログイン/パスワードを使用して単純な文字列でアプリケーションをコンパイルするのは安全ですか?
- これを分解してパスワードを取得することは可能ですか?
- 潜在的な攻撃者からそれを隠す方法は?
- ログイン/パスワードを使用せずに電子メールを送信することは可能ですか?
メールを送信する簡単なアプリケーションを作成しようとしています。私はクラスを使用MailMessage
します。動作するにはログインとパスワードが必要です。SmtpClient
SmpClient
はい、アプリケーションのどこかにパスワードをプレーンテキストで保存することは安全ではありません。しないでください!
代わりに、暗号化されたパスワードをApp.configファイル(または構成ファイルの別の場所、たとえばmachine.config)に保存する必要があります。
ApplicationConfigSectionsの暗号化と復号化
または、実行時にユーザーに資格情報を要求することもできます。
パスワードを明示的に指定しないようにする場合は、現在ログオンしているユーザーのWindows認証を介して認証できます。このためにあなたSmtpClient.UseDefaultCredentials
はメールを送るために使うことができます。もちろん、これはSmtpServerがユーザーのWindowsクレデンシャルを認識する場合にのみ機能します。
中間者攻撃やパケットスニッフィングから保護したい場合は、SSLを使用して認証データを送信する必要があります。これを行うには、構成でSSLを有効にするか、プロパティを自分で設定しますSmtpClient.EnableSsl
。(.NET> = 4.0)