簡體   English   中英

在創建文件時有哪些安全問題

[英]What are security issues in creating file

我正在為我的應用程序寫日志,其路徑為:-

“ C:\\ Folder1 \\ Folder2 \\ Myfile.txt”(可配置)

如果此文件不存在,則在代碼中創建文件夾結構和文件(如果沒有C驅動器,則會彈出一條消息,指出日志目錄不存在)。

在代碼審查中,一位同事說我不應該使用代碼創建文件夾和文件,而應該要求客戶端創建文件,並且僅對此文件執行寫操作。

他說與此有關的安全問題,但不確定是什么,所以我想到將其發布在這里。

請幫助我確定是否應該創建文件(如果不存在),或者請客戶端在每次安裝時創建文件。

第一種方法對安全性有何影響?

寫入問題是,試圖在C根文件夾中創建的用戶可能沒有在該位置創建該文件的權限。 永遠不要假設用戶永遠是管理員。

這也是Windows UAC的問題,這將是一個問題。

是的,可能有問題。 您的程序很可能將在交互式用戶帳戶下運行,因此要遵守其上施加的所有UAC條件。

如果這只是一個日志文件,則一種方法是使用臨時文件,因此請使用:

http://msdn.microsoft.com/zh-CN/library/system.io.path.gettempfilename.aspx

這應該在登錄用戶本地的區域中創建,該區域應允許寫入文件。

我看到的安全性問題是Web應用程序訪問和寫入目錄內文件的能力(如您所述,該文件是可配置的)。

通過檢查對運行您的apppool的帳戶的權限來驗證訪問權限

或通過代碼看到此

沒有代碼天生就是不安全的。 所有這些都取決於其余代碼的外觀,但是作為一般經驗法則,您應該限制應用程序可以訪問哪些文件以及如何訪問它們。 在不損害應用程序功能的情況下,盡可能地限制它。

可能來自此的安全漏洞使用戶可以讀取不應讀取的文件,或寫入重要文件並以這種方式損壞。 例如,如果正在使用用戶輸入創建文件路徑,則用戶可以修改該路徑,以便他訪問不允許訪問的文件。 如果創建這樣的路徑:

string filePath = "c:\\mysafefolder\\" + fileName;

並且用戶輸入相對路徑,例如..\\Windows\\Passwords.txt他將有效地訪問c:\\windows\\passwords.txt

如果將應用程序配置為阻止訪問文件系統(除mysafefolder之外),則嘗試讀取機密文件的嘗試將失敗。

這只是可能發生的事以及限制應用程序權限的一個好主意的示例。 此時,您的代碼可能非常安全,但是限制權限是我們的首要考慮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM