如何在asp.net中保护/加密查询字符串?

时间:2010-06-07 13:04:38

标签: c# asp.net security query-string encryption

我想知道如何在一个简单的asp.net页面中加密/解密你的查询字符串? 某些值需要在不同页面之间传递,但查询字符串不能更改或读取。

有人说httphandles可以解决这个问题。

有什么想法吗?

更多背景信息:

你好所有评论。 这就是问题所在,有时候会话会毫无理由地消失(好吧必须有一个,但我还不知道)。我已经研究了可能的原因,但没有任何可能导致它发生的事情。 所以我不能再依赖它了。 cookie解决方案是可能的,但实现起来比简单地使用查询字符串更多。 网址可以随时复制,只是没有改变!

干杯, 微米。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

我需要这样做,仅供参考,这是我选择的解决方案。

使用HTTPModule加密和解密。然后将模块放入web.config。

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

来自文章:

  

我们需要的是一个HttpModule,可以将加密的查询字符串转换为正常的可读字符串,这样我们仍然可以使用像Request.QueryString [“user”]这样的旧逻辑。换句话说,我们希望用户看到这个

     

?ENC = VXzal017xHwKKPolDWQJoLACDqQ0fE // wGkgvRTdG / GgXIBDd1

     

,而您的代码看到了这个

     ?

用户= 123&安培;帐户= 456

文章中的示例代码包含您要添加的模块。

答案 2 :(得分:1)

如何将所需的值添加到Viewstate? Viewstate可以为您加密和验证。

ViewState["myKey"] = "myValue";

然后再

string myValue = ViewState["myKey"]

启用加密:

<%@Page ViewStateEncryptionMode="Always" %>

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

答案 3 :(得分:0)

这是一个项目,将向您展示如何进行对称加密。 http://www.codeproject.com/KB/security/SimpleEncryption.aspx

我敢提到这一点,因为它会产生很大的开销,但你可以在视图状态下发布信息并使用跨页面帖子来传递信息:

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