2009-07-21 40 views
1

好吧,我仍然對整個ASP.NET以及它是如何回到其頁面的新東西。但我想知道它是否留下了頁面上當前內容的痕跡。ASP.NET PostBack是否保持內容安全

例如,如果我有一個社會安全文本框,並希望加密它並將其發送到另一個服務器,我會通過隱藏的服務器腳本通過提交按鈕或其他方式發回當前頁面後執行此操作這種類型。

雖然如果當頁面被髮回自己時,它會顯示數據。如果有人正在監聽或有權訪問您的瀏覽器日誌,那麼甚至可以將其安全地加密/傳輸到某個地方變得毫無意義。

因此,回發到頁面保持數據的安全,還是打開它像查詢字符串一樣容易訪問呢?如果它沒有任何安全的方式來回到服務器的腳本呢?

回答

4

ASP.NET使用HTTP POST將數據發送到服務器 - 爲了保護任何數據,使用SSL證書加密提交併使用HTTPS。

順便說一句,這不是ASP.NET獨有的 - HTTP POST是通過HTTP發送數據負載的行業標準方式。

+0

這可以防止黑客入侵的路由器或損壞的網絡管理員不太可能發生的情況。它更可能是一個用戶(誰能夠以純文本格式查看html源代碼,不管是否需要)都想要擺脫視圖狀態。 – MatthewMartin 2009-07-21 19:43:40

0

傳遞到服務器時將其存儲爲業務對象非常安全,並且https是最安全的通道。

0

您可以使用AES加密視圖狀態。如果你想得到真正的偏執狂,把第一個請求的時間放到viewstate中,並在x分鐘後拒絕使用viewstate。我忘記了viewstate mac的功能,但它又是一件好事,你可以打開。

最後,即使viewstate是安全的,如果您不使用SSL或有其他理由相信頁面將被重播,它也會受到重播攻擊。

4

的ViewState

使用ViewStateEncryption。您可以設置在頁面級別:

<%@ Page Language="C#" ViewStateEncryptionMode="Always" %> 

您也可以將其設置在web.config中的站點級別:

<system.web> 
    <pages viewStateEncryptionMode="Always" /> 
</system.web> 

其它控制值

安德魯野兔指出這並不包括持有values locally的控件。

請求和響應安全

記住,您需要確保內容的兩種方式 - 並從服務器。 SSL將有助於這兩者。

更多背景here

+1

文本框不會將其值存儲在ViewState中 - ASP.NET會重新合併來自請求的表單輸入的值,而不是來自ViewState。 「 – 2009-07-21 19:43:17

0

您需要使用SSL證書來保護任何表單後期值。另外請記住,如果瀏覽器被黑客入侵,一切都會被黑掉。

因此,在加密發生之前,用戶仍然可以篡改表單數據或表單數據可以被插件捕獲。其次,你不能保護愚蠢的用戶免受黑客攻擊。因此,請始終建議用戶確保他們提交到正確的站點,並且他們沒有看到任何證書錯誤。

最後,這是適用於任何東西,它通過https通信,而不是特定於ASP.NET

1

回發是用於通服務器變量 Web瀏覽器的方式,讓他們每一件事之後通過返回,這樣就保存了服務器需要跟蹤頁面瀏覽之間會話狀態的信息。

將文本框/輸入值初始傳遞給服務器是通過在HTTP連接中傳遞的傳統GET或POST變量發生的,它與ASP.NET的PostBack/Viewstate功能無關。如果打開PostBack加密,它只會加密服務器發送給瀏覽器的內容,以便用戶無法讀取或修改這些變量。

您可以嘗試通過在Javascript中編寫加密函數來加密Web瀏覽器上的SSN字段值,然後將隱藏字段中的加密文本發送到服務器,但必須通過algotihm和任何加密密鑰到瀏覽器,這意味着任何聽到的人都可以看到明文SSN也可以看到加密代碼,從而扭轉您對加密SSN所做的任何嘗試。

最好的解決方案是簡單地讓您的網站在SSL(https://)下運行,這意味着瀏覽器和服務器之間的整個通信都是加密的。沒有必要重新發明加密輪。