0
  • 我编写了一个模块来使用 RSA 密钥重置您的密码。

  • 该代码将向用户发送一封电子邮件,其中包含重置
    密码的链接。

  • 然后,用户将单击该链接,这将把他送回 MVC 网站。

  • 链接由 3 部分组成:URL / ID / Public RSA Key

  • 我正在使用带有路由的 MVC

问题 1:RSA 密钥有斜杠“/”,因此我必须对它们的密钥进行 URL 编码。

问题 2:当密钥被编码并且用户点击它时,MVC 给我以下错误

请求过滤模块用于拒绝包含双转义序列的请求

有谁知道如何使用路由处理 MVC 中的 RSA 密钥?

当然不用打开HTML注入的大门……

4

2 回答 2

2

我建议您将此信息作为查询字符串参数传递。Scott Hanselman 在 中详细解释this blog post

引用他的结论:

在为在请求路径中获得疯狂的东西所做的所有努力之后,值得一提的是,简单地将值保留为查询字符串的一部分(还记得本文开头的 WAY 吗?)更容易、更清洁、更灵活,而且更多安全的。

于 2013-08-15T12:39:11.327 回答
0

您可以使用 web.config 中的以下代码启用该功能。但是请注意,这可能存在安全风险,因为它允许某人将 javascript 双转义元素附加到页面 url,正如许多其他人所评论的那样。

<system.webserver>
    <modules runallmanagedmodulesforallrequests="true">
        <security>
            <requestfiltering allowdoubleescaping="true">
            </requestfiltering>
        </security>
    </modules>
</system.webserver>

到目前为止,您更好的选择是让您的链接转到要求粘贴 RSA 并提交回的表单。为您的最终用户做更多的工作,但更加安全。

于 2013-08-15T12:36:56.480 回答