2009-01-27 109 views
1

我需要能夠在我的網站中打開外部URL,而無需向用戶透露(瀏覽器和源代碼中都有)。我不希望他們能夠複製URL並根據他們的喜好編輯查詢字符串。有沒有辦法在iframe或類似的東西中打開URL,並隱藏/屏蔽其源代碼?屏蔽外部URL

這是一個asp.net 2.0網站。

+0

請不要。你要麼有不好的意圖,要麼通過默默無聞的方式嘗試安全,這根本就不安全。 – 2009-01-27 14:32:41

+0

相信我,這不是我們的第一選擇 – jckeyes 2009-01-27 14:34:23

回答

3

你能做到以下幾點:

  1. 接受來自用戶的參數。
  2. 有一個網頁或後端進程使用它來下載PDF到臨時存儲。
  3. 然後將此流傳輸到客戶端,以便他們不知道生成PDF的URL? (或者直接流式傳輸,不需要臨時下載)

這樣用戶永遠不會知道其他站點,它應該更安全。

這也可以使用一些驗證/驗證,以便用戶無法更改傳遞的參數來檢索其他用戶的PDF。

3

不可以。如果您讓客戶端計算機執行某些操作(即將其瀏覽器指向網頁),則無法從中保留這些信息。

您可以在Flash小部件或其他容器中呈現該頁面服務器端,但不能在客戶端計算機上執行此操作。

1

最佳投注:您可以製作服務器端XMLHTTP請求,獲取響應並使用AJAX反饋回您的頁面。

1

你可能做服務器端通過:

  1. 打開網絡連接到 網站,你想
  2. 從HTML獲取的HTML /坐上 URL
  3. 插入它要求進入你的服務器端頁面

雖然這可能會大大減緩你的頁面加載速度,但可能會伴隨lega l問題。

1

我前一段時間自己也遇到了類似的問題,並沿着這些方向做了一些事情(C#.NET 2.0);

public void StreamURLContents(string URL) 
    { 
     WebRequest req = WebRequest.Create(URL); 

     using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) 
     using (Stream dataStream = resp.GetResponseStream()) 
     using (StreamReader reader = new StreamReader(dataStream)) 
     { 
      string currentLine = reader.ReadLine(); 
      while (currentLine != null) 
      { 
       Response.Write(currentLine); 
       currentLine = reader.ReadLine(); 
      } 
     } 
    } 

你將不得不定製HTML的寫作,以滿足您的特定應用很明顯,你會打破所有的目標站點相對鏈接(圖片網址,CSS鏈接等),但如果你只需簡單的文本HTML,並希望你的Web應用程序抓住它的服務器端,那麼這是一個好方法。

0

您可以通過以下步驟進行一次性網址:

  1. 存儲一個GUID在數據庫
  2. 允許客戶端通過超鏈接或其他方式要求GUID。GUID在URL中用作假頁面;例如:http://www.company.com/foo/abc-123-efg-456.aspx
  3. 使用URL重寫來捕獲和檢查所有到目錄「foo」的請求並重定向到您的處理程序。
  4. 確認GUID有效,然後在數據庫中將其標記爲「過期」
  5. 向客戶端發送相應的數據(PDF?)作爲對請求的響應。
  6. 對相同URL的任何後續請求都會失敗。