2013-02-25 19 views
0

我在寫路徑日誌我的應用程序話說: -什麼是安全問題,創建文件

「C:\ Folder1中\文件夾2 \ myfile.txt文件」(配置)

如果這個文件不存在,我在我的代碼中創建文件夾結構和文件(如果沒有C盤,我彈出一條消息說日誌目錄不存在)。

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

他說有安全問題,但不知道是什麼,所以我想在這裏發佈它。

請幫我決定是否應該創建文件,如果不存在或要求客戶端創建每個安裝。

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

+0

您將此標記爲asp.net問題。您的應用程序是一個將數據保存到磁盤或桌面應用程序的Web應用程序嗎? – 2013-02-25 09:25:54

+0

@Nikola,其網絡應用程序 – 2013-02-25 09:33:48

+0

最簡單的方法是詢問你的同事進行澄清。我在這裏看不到任何安全問題,但也許他會這樣做。讓他解釋一下。 – nvoigt 2013-02-25 09:52:43

回答

0

寫入問題是用戶試圖在C根文件夾中創建,可能沒有權限在那裏創建它。永遠不要假設用戶始終是管理員。

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

+0

感謝您的回覆,這是一個web應用程序,並且被impersoanated給管理員用戶,所以創建文件夾是沒有問題的。任何安全隱患?我的意思是像外部用戶訪問這個並造成傷害。 – 2013-02-25 09:23:31

+1

@PranaliDesai asp.net web應用程序將以'Anonymous'用戶模式運行。可能性是,'inetpub'可能無法訪問'write'來創建文件夾/文件。 – 2013-02-25 09:29:45

0

是的,可能會有問題。您的計劃很可能會在interative用戶帳戶下運行,因此受到任何UAC條件的約束。

一種方法,如果這僅僅是一個日誌文件,將使用臨時文件,所以使用:

http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx

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

0

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

要通過檢查你的應用程序池正在運行

或在其下通過代碼see this

+0

這是日誌文件和配置的值存儲在web.config中,我看不出我的web應用的用戶可以寫入文件。如果是客戶故意做所有屬於他的,他可以搞砸了他的資源,我不打擾:) – 2013-02-25 09:53:24

+0

但你的web應用程序寫入日誌文件,所以你的web應用程序在其下運行的安全帳戶應該有足夠的權限來修改文件。 – 2013-02-25 10:07:46

+0

它模仿管理員,所以不用擔心 – 2013-02-25 10:30:48

0

無碼本身具有不安全性給予帳戶的權限驗證的訪問。這完全取決於代碼的其餘部分是什麼樣子,但作爲一般規則,您應該限制應用程序可以訪問哪些文件以及如何訪問它們。儘可能限制這一點,而不會損壞您的應用程序功能。

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

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

和用戶進入一個相對路徑,例如..\Windows\Passwords.txt他將有效地獲得對c:\windows\passwords.txt訪問。

如果您將應用程序配置爲阻止訪問除mysafefolder之外的文件系統的任何部分,則嘗試讀取祕密文件將失敗。

這只是可能發生的一個例子,以及爲什麼限制應用程序權限是個好主意。此時您的代碼可能非常安全,但限制權限正在考慮未來。