2015-10-28 51 views
0

我在使用「FileSystem.FileOpen」時遇到問題。我張貼下面的代碼。我正在從用戶那裏獲取路徑,並且在打開文件之前我已經驗證了路徑。儘管如此,我仍然在HP Fortify中發現相同的文件操作問題。我使用HP fortify掃描代碼。當我嘗試打開文件時,出現「路徑操作」錯誤

if ((File.Exists(moFrmIntComplaint.lblFilePath.Text)) && moFrmIntComplaint.lblFilePath.Text.IndexOfAny(System.IO.Path.GetInvalidPathChars()) >= 0) 
       { 
        sFilePath = moFrmIntComplaint.lblFilePath.Text; 
        sFileName = Path.GetFileName(sFilePath);//moFrmIntComplaint.lblFileName.Text; 
        sFileDirectory = Path.GetDirectoryName(sFilePath); 
       } 
       if ((String.IsNullOrEmpty(sFilePath.Trim(' ')) == false) && (File.Exists(moFrmIntComplaint.lblFilePath.Text)) && (moFrmIntComplaint.lblFilePath.Text.IndexOfAny(System.IO.Path.GetInvalidPathChars()) >= 0) && !string.IsNullOrEmpty(moFrmIntComplaint.lblFilePath.Text)) 
       { 
        lFilePtr = FileSystem.FreeFile(); 
        FileSystem.FileOpen(lFilePtr, sFilePath, OpenMode.Binary, OpenAccess.Read, OpenShare.Default, -1); 
        lFileSize = (int)FileSystem.LOF(lFilePtr); 
+1

請澄清您的具體問題或添加其他詳細信息,以確切地突出顯示您的需求。正如目前所寫,很難確切地說出你在問什麼。請參閱[如何提問](http://stackoverflow.com/help/how-to-ask)頁面以獲得澄清此問題的幫助。 – Marusyk

+0

我修改了帖子,希望現在問題清楚。 –

+0

請幫忙,在這裏呆兩天 –

回答

0

檢查您的驗證邏輯,看看是否你可以通過一個文件名爲:

../../../cmdshell.aspx

../../../web.config

路徑操作是所有的服務器重定向到一個文件讀取和寫入不受歡迎的位置。不要依賴文件系統權限。

+0

代碼只接受pdf文件。我正在檢查代碼中的其他位置以查看要打開的文件是否爲pdf。但我仍然從Hp Fortify獲得路徑操控警告。 –

+0

文件驗證是一個不同的Fortify類別。 Path Manip的關鍵是保證你不能改變位置。如果你可以使用../或者找出子目錄,你可以讓不好的事情發生。 –

相關問題