善用App_Data的隱身特性

有很多時候我們會在網站上存放重要資料檔案,例如: 相關設定XML、執行過程產生的文字檔,甚至是mdf資料庫檔。原則上這些檔案可放在網站的任何目錄結構下,我們可利用Serer.MapPath()輕鬆算出其實體路徑,當成讀、寫檔案時的參數。

不過,檔案隨便亂擺會有潛在風險,一些僅供程式內部使用的檔案,很多內容是見不得人的或跟資安管控息息相關(例如: 記錄可存取Client IP清單的XML、記載特殊存取事件的Log檔... 等等),當我們將檔案放在一般網站資料夾下,使用者只要組裝出完整URL,就可以用瀏覽器光明正大,輕輕鬆鬆把你的機密檔案帶回去把玩。

ASP.NET 2.0起,增加了App_Data機制,允許我們在網站新增一個名為App_Data的特殊資料夾:

這個特殊資料夾有個特性,放在其中的檔案,程式可以自由讀取,但使用者是完全看不到的,即不可能在URL輸入App_Data透過瀏覽器直接存取檔案。換句話說,這個目錄下的檔案只允許用程式碼存取,禁止使用者以瀏覽器直接讀取。這樣子,我們就可以確保其中的資料不會被使用者任意下載回家。另外,當App_Data應用在web.config中指定ConnectionString時,可使用|DataDirectory|代替,使用Access或SQL Express時頗為方便。

大家在規劃網站檔案儲存位置時,記得善用這個會隱身術的資料夾,提高網站安全。不過要留意,App_Data所能防範的僅僅是使用者透過URL取回資料,如果資料的敏感性高到需要更嚴密保護時(例如: 客戶個資、信用卡資料),仍需要另外更進一步的安全機制防堵檔案系統遭入侵時的風險。

歡迎推文分享:
Published 25 June 2010 01:05 AM 由 Jeffrey
Filed under: ,
Views: 17,430



意見

# psplay said on 29 August, 2011 02:25 AM

謝謝黑大的提醒唷!! 很實用的技巧!!

# Amos said on 04 July, 2012 01:10 AM

感謝大大:

找了好久,終於解決我相對路徑的問題!!!

實在太感謝你了~~

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<June 2010>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication