我正在構建一個webform應用程序,只有登錄的用戶才能看到某些頁面。如何保護直接文件訪問
這些頁面包含多個文件的鏈接,但是一旦用戶知道完整的url(例如:「http://mywebsite.com/files/readme.txt」),他們可以在任何時間任何地點訪問它,而無需登錄。
我使用我的自定義身份驗證,我沒有使用asp.net提供的安全性。
如何防止這樣的問題,我使用asp.net C#4.5的網頁表單應用程序,使用IIS 7
我正在構建一個webform應用程序,只有登錄的用戶才能看到某些頁面。如何保護直接文件訪問
這些頁面包含多個文件的鏈接,但是一旦用戶知道完整的url(例如:「http://mywebsite.com/files/readme.txt」),他們可以在任何時間任何地點訪問它,而無需登錄。
我使用我的自定義身份驗證,我沒有使用asp.net提供的安全性。
如何防止這樣的問題,我使用asp.net C#4.5的網頁表單應用程序,使用IIS 7
不提供直接鏈接到我的檔案託管服務提供商。創建一個名爲GetFile.aspx?id=1
的新頁面,並讓頁面檢索文件。這樣用戶永遠不會知道或直接訪問服務器上的文件。這樣,您可以更改存在文件的文件夾的安全性,以便只有Web服務器才能直接訪問它們。
更改您的鏈接頁面上的是:
public void DownloadFile(string fileName)
{
Response.Clear();
Response.ContentType = @"application\octet-stream";
System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(FileName));
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.Flush();
}
從這個問題採取
代碼示例:Open any file from asp.net
如何下載從asp.net文件<a href="GetFile.aspx?id=1">Click here for read me file</a>
例
您是否使用任何提供ASP.Net(Windows,Forms,Passport)的身份驗證方案?
如果是的話,你可以添加到您的Web.config文件中的「位置」一節中,你可以限制非登錄用戶的文件存儲庫訪問,像這樣(根據你的例子):
<configuration>
<location path="files">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>
在這種情況下,如果用戶知道完整的URL地址,因爲這將不可用,如果是離線
...不要使用文件路徑爲'ID也沒關係'。 –