0

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

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

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

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

我怎样才能防止这种情况?

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

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

<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
4

1 回答 1

0

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

编辑:

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

此单独视图的模型通常是 Password 和 PasswordRetyped(密码输入单一是危险的,因为用户可能会打错字)。

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

于 2013-08-19T20:10:48.093 回答