Password handling in ASP.Net MVC 4



我正在开发一个ASP.Net MVC 4应用程序。

在我的一个模型中,我有一个密码属性,用于存储访问web服务所需的密码。使用此属性存储明文密码意味着当显示关联视图时,明文密码在URL中可见,出于安全原因,这是不允许的
因此,我想让属性存储加密的密码,并只在需要将其传递给web服务时对其进行解密。

我面临的问题我有一个表单,用户可以在其中输入密码。我使用的是asp.net mvc 4模板之一(Html.PasswordFor)。为了让用户输入明文密码并让表单接收它,我在这里使用的密码必须是明文。

我需要的是能够在模型中指定两个属性。其中一个使用明文密码,另一个使用加密密码。对于这个表单字段,我需要使用cleartext属性,但我不希望cleartext密码显示在URL中。

我该如何防止这种情况发生?

是否有一些属性可以添加到属性中,告诉MVC不要自动将其发送到视图?

在视图所基于的模型中,我有一个名为password的属性,如下所示:

<Required()> _
<Display(Name:="Password")> _
Public Property Password() As String
    Get
        Return sPassword
    End Get
    Set(ByVal value As String)
        sPassword = value
    End Set
End Property

在安全连接上使用POST而不是GET将此类信息发送到服务器。我看不出为什么这个明文密码应该出现在url中。

编辑:

当您需要设置密码时,您可能希望以自己的形式进行设置,而不是作为现有表单的一部分。考虑在视图中设置一个链接来触发原始表单,该链接可用于触发另一个可以设置密码的视图。

这个单独视图的模型通常是Password和PasswordRetyped(只有一个密码输入是危险的,因为用户可能会拼写错误)。

通过这样做,您将避免将明文密码发送到视图EVER。

最新更新