2009-09-14 90 views
2

試圖阻止訪問特定文件,而不是訪問任何具有特定擴展名的文件,只是一個特定文件。 問題是最終用戶只能在瀏覽器中輸入:/filename.xml並可以看到這個文件的內容,我寧願他們看不到這個。限制對ASP.NET站點上文件的公共訪問


事情我已經嘗試:

1)把文件的其他

我有一個 「安全」 的文件夾我的託管帳戶的一部分。所以我想我只是改變路徑:「.. \ .. \ .. \ SSL \ FileName.xml」並將文件移動到那裏。 ASP.NET崩潰就這一個出現錯誤:

  • 不能使用的領先..退出頂級目錄

上述所以我相信這是在地方出於安全目的。

2)位置在web.config中

所以接下來我想在web.config中使用此:

<location path="FileName.xml"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

這似乎並沒有做任何事情...任何人都知道爲什麼?我沒有專門在這個應用程序中使用ASP.NET身份驗證,這是爲什麼這不起作用?

3)使用IIS阻止訪問

唉,我沒有訪問IIS,因爲我有一個跛腳得不得了的託管帳戶。


因此,有沒有人知道我在做什麼錯誤的上述嘗試或有任何替代解決方案,我可以嘗試?

kthxbye!

回答

8

您可以將ASP.Net文件夾「App_Data」添加到您的應用程序中,並將xml文件放在那裏?該文件夾專門用於保存這種類型的數據,並將其從瀏覽器/用戶中隱藏起來,但保留在您的應用程序範圍內。

alt text http://img178.imageshack.us/img178/7708/appdata.png

至於爲什麼在你的web.config文件授權指令不能正常使用,這是因爲「.XML」文件擴展名不被ASP.Net管道處理。您需要配置IIS以通過ASP.Net請求處理程序發送對xml文件的所有請求,以便將該安全性指令應用於它。

0

IIS不處理xml文件(只是將它們發佈給請求者),因此安全性不起作用。令人驚訝的是,在Mono平臺上工作...無論如何,你可以讓這個變通方法:在真正安全的文件夾和訪問

  1. 存儲文件時,它使用aspx頁面(文件名作爲參數)以dB
  2. 存儲文件和休息一樣在1個
  3. 存儲文件什麼在您的主機帳戶文件夾中,併爲其指定GUID名稱,然後在數據庫中存儲GUID和實際文件名連接,並通過aspx頁面處理文件下載。