如何在ASP.NET MVC应用程序中处理包含尖括号的LDAP密码

时间:2014-03-10 12:32:34

标签: asp.net asp.net-mvc asp.net-mvc-3

我有一个使用LDAP进行内部用户身份验证的MVC3应用程序。

我刚刚遇到一个用户密码中包含尖括号的情况,例如My<Special>Password,这是LDAP中的有效密码。当用户尝试登录应用程序时,将引发以下异常:

A potentially dangerous Request.Form value was detected from the client

这是我所期望的,但在这种情况下不是我想要的。

我知道我可以使用LogOn来装饰[ValidateInput(false)]方法,但我的应用程序还允许外部用户使用自己选择的密码进行注册,因此我仍然希望捕获任何“潜在危险”表格领域。

使用[ValidateInput(false)]属性并编写自定义代码来检查用户密码是否有更优雅的解决方案?

1 个答案:

答案 0 :(得分:4)

您没有发布您正在使用的模型。但是如果您正在使用模型或者可以转换为简单模型以允许模型绑定,则可以使用[AllowHtml]修饰密码属性以跳过对该属性的验证。

作为替代方案,您可以使用Request.Unvalidated().Form["Password"]来访问未经验证的表单数据。