加密URL导致错误请求

本文关键字:错误 请求 URL 加密 | 更新日期: 2023-09-27 18:15:50

在说明问题之前,我想说我已经阅读了所有建议我所做的是一个坏主意的帖子,我100%同意你的观点,但是,我们的客户坚持认为他希望URL上的id被加密,所以我们没有太多选择。

应用程序是asp.net MVC 2,我们使用的是基本的默认路由"{controller}/{action}/{id}",其中id被加密。

返回加密id的代码如下:

return HttpUtility.UrlEncode(Encryptor.Encrypt(inputText));

加密方法正在使用System.Security.Cryptography.RijndaelManaged类,我们得到如下内容:

http://localhost: 3396/MyController MyAction/% 253 fval % 253 dwrikkm9ueemhdsamjyjgza % 253 d % 253 d

现在当我点击链接时我总是得到一个空白页面,上面写着:

'/'应用程序出现服务器错误。

HTTP错误400 -错误请求。

我猜这个错误是由IIS发送的,因为请求从未到达控制器。

加密URL导致错误请求

也许您的客户不希望人们"猜测"URL中的增量或字符串id,这是许多不安全的web应用程序(例如索尼)被黑客攻击的原因,对吗?这是一个略显无知的要求,但初衷是好的。我理解你的痛苦。

你的客户知道散列和加密的ID之间的区别吗?也许您的生活可以更简单,如果您只是使用盐化+散列id,这增加了同样多的混淆(不是安全!)到URL,减少了需要URLEncode加密值。

理想情况下,您可以放弃这种"加密ID"需求,转而支持SSL、具有页面级权限强制的身份验证系统和可靠的审计跟踪日志记录的组合。