最近在做一個項目的時候,因為很多是調用接口,所以基本不需要數據庫,為了零時保存少量驗證數據,就選擇了使用XML來存放。把項目上傳到服務器上后,發現在用戶端可以動過在瀏覽器上輸入服務器端對應的XML路徑來對XML進行訪問,因為XML中存放有能唯一識別用戶的信息,所以並不希望用戶能查看到此文件,於是在網上搜索了幾種解決方案。
方案一:對XML中的數據進行加密。這種方法確實很簡單,但是並沒有達到我想要的禁止用戶訪問此文件的目的。
方案二:修改XML文件拓展名,例如將.xml改為.do。這種方法也能有效的禁止用戶訪問,但是我項目中對XML的引用處過多,修改起來較為麻煩,所以也不得不再尋找下一種解決方法。
方案三:首先在iis中添加xml映射,映射的程序為C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
然后再web.config中加入以下代碼
<httpHandlers>
<add verb="*" path="*.xml" type="System.Web.HttpNotFoundHandler" />
</httpHandlers>
這樣在用戶訪問XML時,服務器會返回一個404(文件未找到)的頁面
這種方法貌似能很完美的解決我想要結局的問題,可是!我的\Microsoft.NET\Framework\v1.1.4322文件夾下是空的,但是發現了一個v4.0.30319這個文件夾,想着我的是.net Framework4.5的,於是就引用了,可是發現在web.config中加入代碼后,頁面提示httpHandlers這個可能出錯了,奈何怎么改都無果,只能覺得是文件添加錯了。於是好好研究了一下IIS,發現了最終的解決方法。
方案四:在IIS中,有一項請求篩選,打開看了一下,有一項是文件拓展名,可以在里面添加指定的拓展名,從而禁止訪問此類文件。
想來想去還是最終的解決方法(方案四)比較簡單,但是想了一下以數據安全性的角度考慮,還是應當將重要數據將數據加密后存入數據庫或其它數據存儲文件中。