2013-12-13 179 views
1

我有,我想设置Asp.mvc请求验证

requestValidationMode="4.0" 

的ASP.NET MVC 3应用程序和网站的所有方面均正常用户有权访问具有

ValidateInput(true) 

SoI基本上是对所有用户输入进行html编码并将其保存在数据库中。 (该网站并不意味着要在JavaScript)

我的问题是

我应该如何对待注册日志中更改密码功能?

很显然,我希望允许用户插入他/她想要故取其密码,

它是确定是否为密码场我做的客户端上HTML编码,然后html解码在将密码保存到数据库之前?

谢谢

+0

不要保存编码在数据库中的任何东西 - 您应该按照输出的上下文进行编码(例如HTML)。否则,如果您希望以其他格式输出(例如JSON或纯文本),那将是头痛的时刻。 – SilverlightFox

+0

在你的数据库中保存html似乎也不是一个好主意。 – Mihai

回答

1

由于密码不以往任何时候都可能被显示在明文(甚至存储),XSS不应该是密码的担忧。

可以装饰你的(图)模式的密码属性(IES)与[AllowHtml]

我想不出一个原因,密码将需要回送到从服务器的客户端,因此Html消毒步骤不应该是必要的? (密码规则在客户端验证)

Troy Hunt讨论了这个here

+0

感谢您的快速回答。现在你提到它,我可以在更改密码和登录时使用ValidateInput(false)。我唯一担心的是注册表单,它有多个字段(如用户名 - 在网站中显示);不幸的是[AllowHtml]并不是一个真正的选项,因为我已经有了这个代码(它是前一段时间写的,现在改变太头疼了) – Mihai

+0

用户名可能会在页面上回显,所以XSS和Html消毒检查应该在这些上完成。国际海事组织只是可以豁免的密码。 – StuartLC