Asp.net 密码输入是否需要消毒?

Asp.net 密码输入是否需要消毒?,asp.net,security,input,passwords,sanitization,Asp.net,Security,Input,Passwords,Sanitization,我试图通过确保输入的数据对特定字段有效(例如,名称不能包含特殊字符/数字等)来清理任何数据,但是,对于密码字段,我不确定该怎么办。我甚至需要麻烦任何消毒,因为密码只是散列?如果用户要通过密码文本框注入任何恶意内容,我是否应该检查任何可疑内容?另外,一些用户可能(应该!)具有特殊字符,如“”,这通常会触发潜在的攻击警报。我是否应该让密码字段保持未初始化状态?限制密码输入是我最后的选择,因为我觉得用户应该在密码中使用各种字符 谢谢只要您在应用程序中对其进行哈希运算,就应该可以了 考虑到您使用的是as

我试图通过确保输入的数据对特定字段有效(例如,名称不能包含特殊字符/数字等)来清理任何数据,但是,对于密码字段,我不确定该怎么办。我甚至需要麻烦任何消毒,因为密码只是散列?如果用户要通过密码文本框注入任何恶意内容,我是否应该检查任何可疑内容?另外,一些用户可能(应该!)具有特殊字符,如“<>”,这通常会触发潜在的攻击警报。我是否应该让密码字段保持未初始化状态?限制密码输入是我最后的选择,因为我觉得用户应该在密码中使用各种字符


谢谢

只要您在应用程序中对其进行哈希运算,就应该可以了

考虑到您使用的是asp.net,有点离题,但一个值得注意的例外是,如果您使用的是PHP和MySQL并执行类似操作:

UPDATE users SET password = PASSWORD('$pwd') WHERE userid = $uid

在这种情况下,您应该首先清理$pwd。

如果您担心SQL注入攻击,应该开始使用参数化查询与数据库交互。因为这是一个确定密码中哪些字符是有效字符的商业规则,所以当我的客户不这么说时,我不会删除任何内容


所有其他输入都应该进行消毒,因为它们也可能显示在您的页面输出上,并可能导致XSS攻击。

感谢您考虑这一点并采取正确的措施(tm)。我已经厌倦了那些把你限制在一个特定的字符集或10个字符以下的网站。是的,我说的是那个白痴在建银行网站。哈哈,我知道你的意思。我还没有找到一个有效的理由来限制用户的密码。可能有必要禁止(尽管可能不会取消)某些字符。例如,控制字符,尽管有些人过去常常在UNIX密码中使用制表符(我相信)。我认为如果散列不能减轻任何危险代码,这将是最好的方法。由于原始密码没有存储在任何地方,所以盐渍散列应该可以使用。@XSL同意!应该尽快对密码进行哈希运算。如果通过密码中插入的代码对某些网站进行攻击,则此网站传递原始密码的时间过长。感谢回复。我正在使用ASP.NET成员资格控件来完成所有这些,所以希望我不必手动更改密码。因此,只有散列才会被存储,我想这意味着没有威胁。在PHP\MySQL的情况下,如果对$pwd进行散列,为什么需要对其进行清理?@Ubeogesh$pwd没有进行散列。MySQL中的PASSWORD()函数为您进行哈希运算。也就是说,我不建议使用MySQL的密码函数,因为有更好的密码散列方法。我使用ASP.NET控件允许用户注册和更改密码,因此我相信查询是自动参数化的。我在UserCreated事件之前手动清理其他输入,但是密码输入可能会被编码,从而更改实际密码。(例如,