gpt4 book ai didi

c# - 在运行时阻止客户端应用程序中的 WCF 消息记录

转载 作者:行者123 更新时间:2023-11-30 17:48:02 24 4
gpt4 key购买 nike

我见过很多打开 WCF 消息日志记录的方法,但我想在客户端桌面应用程序(WPF 或 WinForms)中阻止 WCF 消息日志记录?我担心一些高级用户会弄清楚如何通过编辑配置文件打开日志记录,并有办法存储我的应用程序发送到远程服务的敏感信息。如果用户知道自己在做什么,那么他们似乎对消息记录具有难以置信的控制力。我搜索了整个 SO 和 MSDN,寻找一种方法来保护此设置,但未能找到任何不能通过编辑配置文件来覆盖的内容。

最佳答案

计算机能做的,用户也能做。这是一个不变的规律,逃不掉。这就是为什么有 Keygens,这就是为什么有软件破解,这就是为什么你的程序不可能生成一条消息,但不允许用户看到它。

您可以让看门狗检查是否启用了日志记录并抛出错误,从而让他们更难,但下面只是一个简短的列表,列出了他们可以采取哪些措施来篡夺这种逃避用户访问权限的肤浅尝试消息:

  • Fiddler / Proxy Server
  • MITM with self-signed certificate
  • Hook on SChannel functions exported from secur32.dll
  • 反编译在他们的计算机上运行的应用程序,可能会对其进行修改以消除您包括的任何障碍
    这听起来很难,但比您想象的要容易得多。几次 nop 之后,您用来从日志消息中检测用户的所有聪明代码都消失了。
  • 在构建消息时进行内存转储。消息的文本将保留在内存中,等待在发送后很长时间(> 200 毫秒)被重新使用。
  • 使用调试器运行并在某些 WCF 函数上放置断点
  • 等...

忽略限制

在检查是否启用跟踪方面,您可以使用如下结构:

private static bool IsWcfTracingEnabled()
{
TraceSource ts = new TraceSource("System.ServiceModel.MessageLogging");
return ts.Listeners.Count > 0;
}

这将返回 false 用于:

<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<clear />
</listeners>
</source>
</sources>
</system.diagnostics>

并且 true 用于:

<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<clear />
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\logs\messages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>

或者:

<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" />
</sources>
</system.diagnostics>

关于c# - 在运行时阻止客户端应用程序中的 WCF 消息记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com