NP8*_*P83 2 asp.net passwords validation asp.net-mvc
我们的初步情况:
当提交密码(例如'<special password>')时,抛出HttpRequestValidationException.
问题描述:
我们只允许在模型的密码属性中添加其他字符.
目前发现的方法:
题:
这两种方法都需要对未经验证的字段进行额外验证.对于这些验证,我们可以编写自定义验证,但我们更喜欢使用现有的众所周知的解决方案.
验证该领域有什么好的建议吗?
我有一个MVC 5应用程序,你的问题让我感兴趣做一些测试.当它转向时,使用"<"和">"符号的许多值都可以正常工作.
所以,真的只有这些字符的密码子集会让你感到悲伤.
您已经提到过快速而肮脏的解决方案,只需在控制器操作级别关闭此功能:
[HttpPost, ValidateInput(false)]
public ActionResult SomeAction(SomeModel model)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
但我认为你真正想做的是为单个字段禁用此功能.这可以通过使用模型中给定属性的[AllowHtml]标记来完成.
[AllowHtml]
public string Password{ get; set; }
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.web.mvc.allowhtmlattribute(v=vs.118).aspx
假设您有自己的登录表,并且正在为您的模型使用实体框架生成的类,那么这可以作为元数据应用于同一名称空间中的另一个部分类.
namespace MyProject.Models
{
[MetadataType(typeof(UserMetaData))]
public partial class User
{
}
public class UserMetaData
{
[AllowHtml]
public string Password { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
最后,一旦你把这一切都搞定了,我注意到了一种奇特的行为.如果我在密码中允许这些特殊字符,并且登录失败并返回到登录页面,则返回空白页面...好像还有其他安全功能我正在点击.然而,我仍然可以登录包含特殊字符的登录而没有问题......
因此,我最终必须让我的登录操作始终重定向到另一个操作(即使在这些失败时),以防止在登录尝试失败时包含密码的奇数球特殊字符导致空白页面.
归档时间: |
|
查看次数: |
2589 次 |
最近记录: |