2013-02-27 12 views
7

Próbuję wykonać prostą aplikację, która wyśle ​​wiadomość e-mail. Używam klas MailMessage i SmtpClient. SmpClient wymaga zalogowania się i podania hasła.Wysyłaj wiadomości e-mail w bezpieczny sposób

  • Czy można bezpiecznie skompilować aplikację za pomocą loginu/hasła w prostym łańcuchu?
  • Czy można to zdemontować i uzyskać hasło?
  • Jak ukryć to przed potencjalnym napastnikiem?
  • Czy można wysłać e-mail bez zalogowania/hasła?
+2

Będziesz musiał zaszyfrować hasło, ponieważ każdy zwykły ciąg znaków będzie łatwo przeglądany przy użyciu narzędzi takich jak reflektor. Chciałbym poprosić użytkownika lub przechowywać zaszyfrowane hasło w pliku typu konfiguracji. –

+1

Utwórz ** konto usługi **, które może wysyłać wiadomości e-mail (ale nie wiele więcej) i szyfrować poświadczenia? – SpaceBison

Odpowiedz

6

Tak, przechowywanie hasła w postaci zwykłego tekstu w dowolnym miejscu aplikacji jest niebezpieczne. Nie rób tego!

Zamiast tego, należy przechowywać hasła zaszyfrowany w pliku app.config (lub gdzie indziej w pliku konfiguracyjnym, machine.config przykładowo):

Encrypting and Decrypting ApplicationConfigSections

Alternatywnie można zapytaj użytkownika w czasie wykonywania o referencje.

Jeśli chcesz uniknąć jawnego podawania hasła, możesz uwierzytelnić za pomocą uwierzytelniania Windows aktualnie zalogowanego użytkownika. W tym celu można użyć SmtpClient.UseDefaultCredentials do wysłania wiadomości. Oczywiście działa to tylko wtedy, gdy SmtpServer rozpozna poświadczenia Windows użytkowników.


Jeśli chcesz być bezpieczny od man-in-the-middle ataki i pakiet wąchania, należy użyć protokołu SSL do przesyłania danych uwierzytelniających. Możesz to zrobić przez enabling SSL in the configuration lub po prostu ustawiając własność: SmtpClient.EnableSsl. (.NET> = 4.0)

+0

Wygląda na to, że muszę teraz przeczytać dużo, aby zrozumieć tę aplikację App.fix. W Asp.net widziałem coś takiego, ale w WinForm nie widzę tego. Jednak zacznę o tym mówić. Ale kiedy SmtpClient wysyła wiadomość, czy hasło jest widoczne dla atakującego, który używa sniffera pakietów? – zgnilec

+1

Możesz użyć protokołu SSL do wysłania wiadomości e-mail, aby hasło nie było wysyłane w postaci zwykłego tekstu i chroni Cię przed snifferami pakietów. – magnattic

+0

W jaki sposób przydatne jest przechowywanie hasła w zaszyfrowanej formie? Jeśli jest zaszyfrowana, aplikacja będzie musiała go odszyfrować, więc hasło do * tego * będzie niezaszyfrowane w programie binarnym, itp. –

Powiązane problemy