我想知道如何在一个简单的asp.net页面中加密/解密你的查询字符串? 某些值需要在不同页面之间传递,但查询字符串不能更改或读取。
有人说httphandles可以解决这个问题。
有什么想法吗?
更多背景信息:
你好所有评论。 这就是问题所在,有时候会话会毫无理由地消失(好吧必须有一个,但我还不知道)。我已经研究了可能的原因,但没有任何可能导致它发生的事情。 所以我不能再依赖它了。 cookie解决方案是可能的,但实现起来比简单地使用查询字符串更多。 网址可以随时复制,只是没有改变!
干杯, 微米。
答案 0 :(得分:2)
您必须使用.Net加密之一手动加密它。实际上这不是查询字符串的用途。如果您不希望用户能够访问它,您应该找到一种不同的方式在页面之间传递它。
这是一个项目,将向您展示如何进行对称加密。 http://www.codeproject.com/KB/security/SimpleEncryption.aspx
我敢提到这一点,因为它会产生很大的开销,但你可以在视图状态下发布信息并使用跨页面帖子来传递信息:
答案 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
我敢提到这一点,因为它会产生很大的开销,但你可以在视图状态下发布信息并使用跨页面帖子来传递信息: