2010-09-10 119 views
4

我有一個html文件 index.html(在我的服務器上說是abc.com)訪問 xyz.js,如如何拒絕直接訪問服務器中的xml文件

<script type="text/javascript" src="xyz.js"></script> 

javascript文件依次訪問 data.xml文件。 文件 index.html,xyz.js data.xml位於同一文件夾中。

如果用戶在瀏覽器中鍵入 abc.com/xyz.js abc.com/data.xml,我如何拒絕直接訪問 xyz.js data.xml。 不用說 index.html必須能夠訪問這些文件。

我該怎麼做(最好用 .htaccess

回答

4

我假設你的意思的index.html指的.js通過腳本標記文件,然後JS中的XML使用讀取做到這一點XMLHttpRequest或類似的東西。即:js和xml都需要被瀏覽器讀取,但是您想限制它只能是「批准」的方式。

如果這是正確的,那麼你不能。您可以嘗試查看Referer,但它不可靠且容易欺騙。即使沒有欺騙,許多瀏覽器都具有調試工具,可以輕鬆查看每個已執行GET的結果。

最好只適應這樣一個事實,即只要用戶足夠努力,發送給瀏覽器的任何內容都可能被用戶查看。

我猜想JavaScript可以使用混淆器工具,如果你覺得如此傾向。對於XML來說,你可以做的事情不多。我想你可以加密它,但這很容易破解,因爲你的js代碼必須包含解密例程和密鑰。

0

如果您確實需要保護數據,則需要實現程序的敏感部分以在服務器上運行,而不是在客戶端上運行。然後,您可以將您的數據源完全保留在公共網絡空間之外。如果客戶端(瀏覽器)可以訪問原始數據,那麼用戶也可以訪問(即使你強迫他們通過多個步驟來獲取它)。

要acheive你的目標,你需要在兩個分割你的程序架構:

  • 非敏感的部分運行,在JavaScript中,在瀏覽器
  • 敏感部位運行在.NET/JAVA/php/ruby​​/python等等,在服務器上