2009-08-11 90 views

回答

7

我假設你想加密日誌的輸出。在這種情況下,你需要編寫你自己的Appender來處理加密。我會建議找出你打算在沒有加密的情況下使用什麼輸出機制(即FileAppender,EventLogAppender等),然後擴展該Appender並覆蓋實際寫出輸出的功能。

在追加程序的參考文檔可以發現here

例如,與EncryptedFileAppender擴展FileAppender和覆蓋/實現需要以掛接到文件寫入成員。

或者,您可以從IAppender擴展並完全從頭開始創建appender。這會給你更多的控制權,但如果你想要加密你的有效載荷,可能需要更多的工作。

+0

感謝您的精彩提示。所以,你的意思是,我最好先加密我的內容,然後再附加到我的日誌中,然後執行一個包裝工作。那麼,我的logss的內容將全部加密,而無需在log4net中配置任何內容? – paradisonoir 2009-08-11 15:23:41

+0

您應該能夠將其實際追加到日誌文件的每個行項目的位置,從而允許您加密整個行。一旦你完成了,那麼你需要配置log4net來使用你的Appender,而不是你之前使用的任何東西。在這種情況下,EncryptedFileAppender – Joseph 2009-08-11 15:37:29

+0

@Joseph,你是否建議爲每行日誌或當它翻轉到不同的文件(因爲它達到日誌的最大大小)加密它? – paradisonoir 2009-08-11 17:13:03

2

如果您正試圖防止用戶閱讀它在網上,你可以改變你在寫日誌記錄的擴展,你不允許通過自己的網站提供服務的文件名。這樣,用戶就無法猜測您的日誌文件並通過網絡訪問它。

如果你想防止用戶查看該文件的內容登錄到服務器本身,你可以使用權限控制鎖定文件下來,只在特定的管理員組的用戶可以查看其內容。

或者,您可以登錄到數據庫,以便有沒有文件,需要在所有擔保。

3

對加密沒有直接的支持。正如其他人在此說明的那樣,您必須自己實施。

這就是說,我會建議一個子類來ForwardingAppender做加密。這基本上會讓你把你的appender「放在」你選擇做的任何標準appender之前,以便真正寫入磁盤。

1

我知道這個答案來自原來的發佈日期了幾年之後,卻面臨着同樣的問題後,我決定創建一個開源包做只是這工作:log4net的消息加密器

的源代碼在GitHub

中找到,該軟件包可以從NuGet

+0

感謝分享,我正在尋找類似nlog的解決方案,現在至少我有一個參考實現要遵循。順便說一下,我打算使用公鑰/私鑰來加密一個隨機密鑰,以進一步提高安全性,而不是修復對稱密鑰,因爲任何有權訪問該日誌的人也可以從app.config獲得密鑰 – faulty 2015-07-23 06:44:04

+1

很高興能幫助您! 對於我來說,主要的用例集中在日誌存儲在數據庫中或關閉初始服務器。我的想法是,如果攻擊者可以訪問web.config文件,那麼加密日誌可能是徒勞的手勢! 我甚至還在考慮將實現移植到NLog上,但是生活就這樣陷入了困境。如果您確實設法創建了項目並將其開源,請告訴我,因爲我會特別感興趣! – 2015-07-23 09:27:52

+1

另外要提到的是web.config中的加密密鑰部分應該使用Aspnet_regiis加密。這意味着密鑰不是純文本的,並且會更安全一些。 – 2015-07-23 09:47:39