4

我正在尝试通过确保数据对特定字段有效(例如名称不能包含特殊字符/数字等)来清理输入的任何数据。但是,我不确定当它出现时该怎么做到密码字段。由于密码只是散列,我什至需要进行任何清理工作吗?如果用户要通过密码文本框注入任何恶意内容,我是否应该费心检查任何可疑内容?AFAIK,一些用户可能(应该!)具有特殊字符,例如“< >”,这通常会触发潜在的攻击警报。我应该不清理密码字段吗?限制密码输入对我来说是最后的手段,因为我觉得用户应该在密码中使用各种字符。

谢谢

4

2 回答 2

4

只要您在应用程序中对其进行散列处理,就应该没问题。

考虑到您使用的是 asp.net,这有点离题,但如果您使用的是 PHP 和 MySQL 并执行以下操作,则有一个明显的例外:

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

在这种情况下,您需要先清理 $pwd。

于 2010-01-11T21:53:21.740 回答
3

如果您担心 SQL 注入攻击,您应该开始使用参数化查询与您的数据库进行交互。由于确定密码的有效字符是一项业务规则,因此当我的客户不这么说时,我不会删除任何内容。

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

于 2010-01-11T21:53:59.137 回答