NLog - 如何解密日志文件

NLog - how decrypt the log file

我已经登录我的网站,我想对日志文件进行加密。要加密日志文件,我只需将属性 fileAttributes="Encrypted" 添加到配置文件,您可以在此处查看:

    <target name="file" xsi:type="File"
        layout="${longdate} | ${pad:padding=-5:inner=${level:uppercase=true}} | ${message} ${onexception:inner=${newline}   ${exception:format=ToString}}"
        fileName="${basedir}/Log/log_info.log"
        fileAttributes="Encrypted"
        archiveFileName="${basedir}/Log/log_info_{#}.log"
        archiveAboveSize="1048576"
        archiveNumbering="Rolling"
        maxArchiveFiles="2"
        concurrentWrites="true"
        keepFileOpen="false" />

问题:如何解密文件以查看日志记录?

fileAttributes="Encrypted" 表示文件将具有加密的 NTFS 属性。 https://github.com/nlog/NLog/wiki/File-target

要解密它 - 转到文件属性 -> 属性 -> 高级并取消选中 "Encrypt content to secure data"。

它在加密文件的同一台计算机上工作。因此无法在另一台计算机上解密该文件的副本。

NLog 本身并不加密文件,它只是要求操作系统来处理它。使用 FileOptions.Encrypted 枚举值在 .NET 中公开。谁的评论很好地描述了它的作用:

Indicates that a file is encrypted and can be decrypted only by using the same user account used for encryption.

"Same user account" 是最典型的挂断,IIS 通常用它自己的帐户运行,详细信息在 this existing Q+A. The operating system implementation is covered in detail in this MSDN page.

中有详细介绍

在 Web 服务器上使用此选项应该会稍有停顿。唯一可以轻松读取日志文件的人是从外部破坏机器的攻击者。他可以轻松阅读该文件,因为他使用的是 IIS 帐户,所以可以很容易地以明文形式获得其内容。 需要日志文件来阻止此类攻击者的人将很难阅读该文件,因为他们将使用自己的帐户访问机器。

这不是理想的安全措施。