Asp.net mvc 4 使用RSA密钥重置密码

Asp.net mvc 4 使用RSA密钥重置密码,asp.net-mvc-4,Asp.net Mvc 4,我编写了一个模块来使用RSA密钥重置密码 代码将向用户发送一封电子邮件,其中包含一个重置其密码的链接 密码 然后,用户将单击该链接,该链接将把用户发送回 MVC网站 该链接由3部分组成:URL/ID/Public RSA Key 我将MVC与routes一起使用 问题1:RSA密钥有斜杠“/”,因此我必须对它们的密钥进行URL编码 问题2:当密钥被编码并且用户点击它时,MVC给我以下错误 请求过滤模块配置为拒绝包含双转义序列的请求 有人知道如何使用路由在MVC内部处理RSA密钥吗 当然,不必打

我编写了一个模块来使用RSA密钥重置密码

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

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

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

  • 我将MVC与routes一起使用

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

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

    请求过滤模块配置为拒绝包含双转义序列的请求

    有人知道如何使用路由在MVC内部处理RSA密钥吗


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

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

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

    到目前为止,更好的选择是将链接转到要求粘贴RSA并提交回的表单。为最终用户做的工作稍微多了一点,但安全性大大提高。

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

    引用他的结论:

    经过所有这些努力,在请求路径中获得疯狂的东西,它是 值得一提的是,只需将这些值作为查询的一部分 字符串(还记得这篇文章开头的地方吗?), 更干净、更灵活、更安全


    但是,这会使应用程序暴露安全漏洞。看,这将为HTML注入打开大门……您可能想看看。另外,“MVC”在ASP.net中是否有不同的含义?我只知道模型-视图-控制器设计模式的含义,它本身不能做任何错误抛出。我会看看它,thanks@JAB“MVC”是对ASP.net MVC框架的通用引用。许多人实际上没有意识到该框架是以设计模式命名的,而是使用了简写法。