Защита пароля электронной почты при использовании NLog - PullRequest
2 голосов
/ 08 июля 2011

При использовании NLog в качестве инструмента ведения журнала мы можем легко отправлять сообщения по электронной почте, например, это пример конфигурации для использования Gmail в качестве сервера smtp:

<targets>
<target name="gmail" type="Mail"
        smtpServer="smtp.gmail.com"
        smtpPort="587"
        smtpAuthentication="Basic"
        smtpUsername="user@gmail.com"
        smtpPassword="password"
        enableSsl="true"
        from="emailaddress@gmail.com"
        to="recipient@example.com"
        cc="alice@example.com;bob@example.com;charlie@example.com"
      />
</targets>
<rules>
 <logger name="*" minlevel="Debug" writeTo="gmail" />
</rules>

Это работает как чудо.Но в приведенном выше примере пароль записывается в виде простого текста в файле конфигурации.
Есть ли способ как-нибудь его защитить?

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Да, вы можете переместить файл NLog.config (если он есть в этом файле) в ваш app.config, а затем зашифровать свой app.config.

Вы можете посмотреть, как зашифровать app.config здесь .

0 голосов
/ 04 декабря 2011

Вы можете настроить регистратор внутри кода.Там вы можете даже скрыть свой пароль от любого с помощью hex-редактора!Кроме того, никто не получает никакой возможности возиться с вашим файлом конфигурации.

Public Class MyEmailLoggerClass
    Public Sub New()
        SetNlogConfiguration()
    End Sub

    Private Sub SetNlogConfiguration()
        Private MyNLogConfiguration As New LoggingConfiguration()
        Dim myemailtarget As New MailTarget()
        Dim MailRule As New LoggingRule("myemail", LogLevel.Info, myemailtarget) 

        With myemailtarget
            .SmtpServer = "mail.724hosting.com"
            .SmtpAuthentication = SmtpAuthenticationMode.Basic
            .SmtpUserName = "myemail" & "@" & "somewhere.com"
            .SmtpPassword = "my" & "pass" & "word"
            .SmtpPort = 587
            '.Encoding = System.Text.Encoding.UTF8
            .EnableSsl = true
            .AddNewLines = True
            .Html = True
            .Layout = "${message}"
            'message options
            .To = "sometech" & "@" & "somewhere.com"
            .cc = "bob@somewhere.com,harry@somewhereelse.com"
            .From = "myapplication@here.com"
            .Header = "<h2 style='color:red'>Message from myapplication!</h2>"
            .Subject = "Report from " & myapplicationname & " on someone's computer" & ${date:F}"
            .Body = "${message}"
        End With

        LogManager.Configuration = myNlogConfig
    End Sub
End Class

Чтобы использовать его, поместите его в подпункт, в который вы хотите отправить электронное письмо:

    Public MainLogger As New MyEmailLoggerClass
    Dim Logger = LogManager.GetLogger("myemail")
    Logger.Info("Hi, this is a message from my application")
...