在asp.net mvc的url中作为id传递的加密文本

时间:2013-10-03 16:26:26

标签: asp.net-mvc url encryption

我通过在注册时向用户发送电子邮件来实施电子邮件验证。成功注册一封邮件,其中包含“http://mydomain.com/Account/Activate/EncryptedKeyID”链接。有时我得到'/'或特殊字符,不能传递给网址。所以,我使用HttpUtility.UrlEncode进行编码。但这没有用。当我点击电子邮件时,由于“http://mydomain.com/Account/Activate/JLU/YmtRdRAFmBdqhR7tnA==”中的额外斜杠,它会出现IIS错误。我使用Rijndael / AES进行加密和解密。

我的问题是: 我应该采用另一种加密方法吗? 还有其他选择吗?

提前感谢您的时间和帮助

1 个答案:

答案 0 :(得分:1)

在挖掘之后,我发现HttpUtility.UrlEncode不能用于我的情况,我必须使用HttpServerUtility.UrlTokenEncode,因为它对于url更安全。它不包含任何带有' - '和'/'字符的潜在危险字符'+'和'/'。对于我的情况,我使用var ativationLink=HttpServerUtility.UrlTokenEncode(Convert.FromBase64String(Rij.Encrypt(param)));链接添加电子邮件。

并检索我使用的原始参数

 var param= Rij.Decrypt(Convert.ToBase64String(HttpServerUtility.UrlTokenDecode(ActivationKey)));