在陈述问题之前我想说我已经阅读了所有帖子,这些帖子暗示我所做的事情是个坏主意,我同意100%但是,我们的客户坚持要他要加密的URL上的ID,所以我们没有太多选择。
应用程序是ASP .Net MVC 2,我们使用的是基本的默认路由 " {控制器} / {行动} / {ID}"其中id已加密。
返回加密ID的代码如下:
return HttpUtility.UrlEncode(Encryptor.Encrypt(inputText));
Encrypt方法正在使用System.Security.Cryptography.RijndaelManaged类,我们得到类似的内容:
的http://本地主机:3396 / myController的/ MyAction /%253fval%253dWrikkm9UeEmHdsaMJyjgzA%253D 253D%
现在当我点击链接时,我总是得到一个空白页面说:
' /'中的服务器错误应用
HTTP错误400 - 错误请求。
我猜这个错误是由IIS发送的,因为请求永远不会到达控制器。
非常感谢任何帮助。
答案 0 :(得分:1)
也许您的客户不希望人们在URL中“猜测”增量或字符串ID,这就是许多不安全的Web应用程序被黑客攻击的程度(例如索尼)对吗?这是一个略微不知情的需求,但用心良苦。我理解你的痛苦。
您的客户是否知道散列和加密ID之间的区别?如果您只使用salted +散列ID,那么您的生活可能会更简单,这会为URL添加混淆(不是 security !),减去URLEncode的需要加密值。
理想情况下,您可以通过SSL,具有页级权限实施的身份验证系统和可靠的审计跟踪日志记录的组合来获得此“加密ID”要求。这是标准的Web应用程序安全性。