2010-06-07 102 views
2

我想知道如何在簡單的asp.net頁面中加密/解密你的查詢字符串? 需要在不同頁面之間傳遞一些值,但不能更改或讀取查詢字符串。如何在asp.net中保護/加密你的查詢字符串?

有人說httphandles可能是解決方案。

有什麼想法?

更多背景信息:

嗨thx所有評論。 這是問題,有時會話沒有任何理由消失(好吧,必須有一個,但我不知道它)。我研究了可能的原因,但沒有任何可能導致它發生。 因此我不能再依賴它了。 餅乾解決方案是一種可能性,但實現起來比單純使用查詢字符串更有效。 該URL可以在任何時候複製只是沒有改變!

乾杯, M.

+2

這是真的餿主意。如果您需要將值傳遞給不同的頁面,爲什麼不使用Postback或數據庫中的值。加密查詢字符串會導致醜陋的URL,並非萬無一失。 – 2010-06-07 13:14:10

+4

如何使用cookie? – ChrisW 2010-06-07 13:21:50

+1

這確實聞到了「糟糕的計劃」。我真的認爲你可能有錯誤的架構。你能保持這個信息服務器端?您真的不應該以這種方式傳輸敏感信息,不會加密。也許你可以擴展你認爲「會話不可靠」的方式。也許你可以告訴我們一個用例,你覺得這個構造提供了一個解決方案。 – Cheekysoft 2010-06-07 13:38:08

回答

2

你必須手動將其使用.net加密的一個加密。真的,這不是查詢字符串的用途。如果你不希望用戶能夠訪問它,你應該找到一種不同的方式在頁面之間傳遞它。

這是一個項目,將告訴你如何做對稱加密。 http://www.codeproject.com/KB/security/SimpleEncryption.aspx

敢我提到這一點,因爲這將創造顯著的開銷,但你可以在視圖狀態發表您的信息,並使用跨頁的帖子是傳遞信息:

http://www.velocityreviews.com/forums/t119789-view-state-in-previous-page-using-cross-page-postback.html

+0

是的,我知道但會議不可靠。我真的不知道如何傳遞價值觀。 – user29964 2010-06-07 13:07:33

+1

夥計。會議是完全可靠的。然而,ViewState實際上並不使用會話,只是一個隱藏的HTML表單字段。不是說它會幫助你,因爲它在不同的頁面之間丟失了。 – tomfanning 2011-08-04 17:48:20

1

怎麼樣將你需要的值添加到Viewstate中? Viewstate可以爲您加密和驗證。

ViewState["myKey"] = "myValue"; 

再後來

string myValue = ViewState["myKey"] 

要啓用加密:

<%@Page ViewStateEncryptionMode="Always" %> 

<configuration> 
    <system.web> 
     <pages ViewStateEncryptionMode="Always" /> 
    </system.web> 
</configuration> 
2

我需要做到這一點,僅做參考,這是我選擇的解決方案。

使用HTTPModule進行加密和解密。然後,只需將該模塊放入web.config。

在這裏找到它: https://madskristensen.net/blog/httpmodule-for-query-string-encryption/

從文章:

我們需要的是,可以把加密的查詢字符串成爲一個正常可讀之一,所以我們仍然可以使用一個HttpModule我們像Request.QueryString [「user」]這樣的舊邏輯。換句話說,我們希望用戶看到這個

?ENC = VXzal017xHwKKPolDWQJoLACDqQ0fE // wGkgvRTdG/GgXIBDd1

,而你的代碼,認爲這

?USER = 123 &賬號= 456。

本文中的示例代碼包含要添加的模塊。