[英]Block WCF message logging in client application at run time
我已經看到很多方法可以打開WCF消息日志記錄,但我想阻止在客戶端桌面應用程序(WPF或WinForms)中記錄WCF消息? 我擔心一些高級用戶會弄清楚如何通過編輯配置文件打開日志記錄,並有辦法存儲我的應用程序發送到遠程服務的敏感信息。 如果用戶知道他們正在做什么,它似乎對消息記錄具有令人難以置信的控制。 我搜遍了所有SO和MSDN,尋找一種方法來保護這個設置,並且只能通過編輯配置文件找不到任何無法覆蓋的內容。
計算機可以做的任何事情,用戶都可以做。 這是一個不可逃避的不可改變的法律。 這就是為什么有Keygens,這就是為什么軟件破解的原因,這就是為什么程序不能生成消息,但不允許用戶看到它。
你可以通過監視器檢查是否啟用了日志記錄並拋出錯誤來使它們變得更難,但下面只是一個簡短的列表,列出了他們可以做些什么來篡奪這種表面上試圖逃避用戶對消息的訪問:
nop
和所有聰明的代碼都消失了。 在檢查是否啟用了跟蹤方面,您可以使用如下構造:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.