2012-05-03 34 views
0

我在我的網站文件夾中包含的文件,我不希望用戶通過瀏覽器瀏覽到,所以我要把它放到我的web.config防止用戶而不是通過一個鏈接導航到通過瀏覽文檔

<location path="documents"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    <system.webServer> 
     <directoryBrowse enabled="false" /> 
    </system.webServer> 
    </location> 

問題是,在我的網站某些網頁我有聯繫的這些非常文檔,我也希望用戶能夠看到這些文件時,他們點擊。問題是,目前當他們點擊這些鏈接時,他們沒有收到文件。我明白,這是一個矛盾的事態。有利於我的唯一的事情是,當用戶點擊一個鏈接,他將被記錄。是否有某種方式這是可以解決的?

回答

2

我會這樣做的方式是將一個頁面作爲參數接收一些ID給你想要獲得的文件(文件名本身也可以,如果它本身不是安全漏洞)用戶的憑證和對後面代碼中的文件的訪問,然後用文件內容(這樣在服務器端加載)覆蓋輸出。

通過這種方式,客戶端永遠不會需要訪問機密文件夾可言,所有的通信都要經過你的網頁,並通過您的憑據檢查算法。即使他們得到別人的有效鏈接,他們沒有獲得它,他們會得到一個請求被拒絕屏幕(或任何你選擇的代碼)。

+0

我希望該文件是可點擊的,以便用戶從瀏覽器中的文件中獲取數據(例如在文本文件的情況下)或者在我喜歡的文檔類文件的情況下一個提示詢問用戶是否想要在默認程序中保存或打開文件。這是點擊不受保護的文件時的默認功能。這怎麼可能? –

+0

有作爲文件,只有鏈接沒有這樣的事。您可以顯示和名稱的鏈接,只要你想,它仍然是下方的鏈接。如果你問如何傳輸二進制數據,這個過程非常簡單:你不要輸出任何東西到流中,添加MIME內容類型頭,然後發出一個'Response.BinaryWrite'(或'Response.WriteFile' )將二進制數據寫入您的響應。 – Blindy

相關問題