【问题标题】:Encrypted URL results in Bad Request加密 URL 导致错误请求
【发布时间】:2012-01-06 13:41:14
【问题描述】:

在陈述问题之前,我想说的是,我已经阅读了所有暗示我正在做的事情是个坏主意的帖子,我 100% 同意你,但是我们的客户坚持说他想要URL 要加密,所以我们没有太多选择。

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

返回加密id的代码如下:

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

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

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

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

“/”应用程序中的服务器错误。

HTTP 错误 400 - 错误请求。

我猜这个错误是由 IIS 发送的,因为请求永远不会到达控制器。

任何帮助将不胜感激。

【问题讨论】:

标签: c# asp.net-mvc encryption


【解决方案1】:

也许您的客户不希望人们“猜测” URL 中的增量 ID 或字符串 ID,这就是许多不安全的 Web 应用程序(例如 Sony)被黑客入侵的原因,对吧?这是一个有点不知情的要求,但用心良苦。我理解你的痛苦。

您的客户是否知道散列 ID 和加密 ID 之间的区别?如果您只使用加盐+散列的 ID,也许您的生活会更简单,这会为 URL 添加同样多的混淆(而不是安全!),而无需对 URL 进行编码加密值。

理想情况下,您可以通过结合使用 SSL、具有页面级别权限执行的身份验证系统和可靠的审计跟踪日志记录来满足这种“加密 ID”要求。这是标准的 Web 应用程序安全性内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2021-12-23
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多