编辑2010年1月18日,
是否有任何不允许在密码中使用的符号?
=========================================
您好,
我想知道在网站上创建新帐户的用户名/密码的'常见'政策。
这是我目前所拥有的:
===========对于用户名==================
长度在6到20个字符之间
不允许有空格
用户名区分大小写
可以包含lettle,数字和符号
* Uppercase letter (A-Z)
* Lowercase letter (a-z)
* Digit (0-9)
注册后无法更改
===========密码=============
6-20个字符长
可以包含lettlers,数字和符号
* Uppercase letter (A-Z)
* Lowercase letter (a-z)
* Digit (0-9)
* Special character (~`!@#$%^&*()+=_-{}[]\|:;”’?/<>,.)
密码在数据库中加密 密码可以在请求时发送到电子邮件地址
由于
答案 0 :(得分:5)
对于用户名,您可以将其区分大小写,但我可能不允许“类似”匹配。 例如,在网站上将这些用户名作为所有差异帐户会很烦人: 路易吉 LUIGI 路易吉 路易
这可能会导致悲伤(人们使用类似的帐户名来嘲笑/骚扰某人)。而这只会令人困惑。当你有类似的角色时会引起问题ilike l I o 0 o O。
我宁愿使用电子邮件地址作为用户名,因为他们会记住它。很多不同的网站都有不同的用户名很烦人。电子邮件地址保证是唯一的:)
密码限制似乎很好。至于那只是强迫你想要强制密码的问题。虽然,我不会通过电子邮件发送密码。电子邮件不安全,此处首选重置密码方法。
答案 1 :(得分:4)
密码在数据库中加密 密码可以发送到电子邮件 请求地址
加密?哈希?是。如果它是哈希值,则无法从哈希中获取密码以将其发送给用户,这是应该的。
如果用户忘记密码,请使用临时密码重置密码,然后通过电子邮件发送给用户,以便他们定义新密码。
永远不要在您的数据库中存储纯文本或加密密码;如果您的软件无法解密,那么攻击您的数据库的攻击者也可以这样做。
答案 2 :(得分:4)
答案 3 :(得分:1)
答案 4 :(得分:1)
越来越常见的一种做法是不要在您的网站上拥有用户名和密码,而是要依赖OpenID或其他身份验证提供程序。
在电子邮件中发送用户密码是一种必须停止的可怕习惯。如果用户忘记密码,请随机发送密码,并要求他更改密码。请不要在电子邮件中发送他的密码(众所周知,大多数用户在许多应用/网站上使用相同的密码)。
答案 5 :(得分:0)
OpenID不是一个选项吗?
我喜欢使用电子邮件地址作为“用户名”的想法,而不需要在以后存储它以进行通信等。对于密码,鼓励“强”的。 6-12个字符的随机套管和数字穿插。
然后我会哈希密码。
答案 6 :(得分:0)
为什么要对用户名强制执行最大限制?如果有人想要 - 或者出于什么原因 - 为他们的用户名使用特别长的字符串,它会严重影响您,还是危及您的数据库?
如果你正在加密密码,那么上限实际上没有意义,因为哈希(你使用的任何函数)将产生一个或多或少的一致长度字符串,而不管我对哈希函数的理解 - 长度。我还考虑对已知的彩虹表运行提交的 - 和散列/加密 - 密码,以尝试强制使用强密码。但这可能会,也可能不会取决于具有可搜索彩虹表的此类站点的可用API或许可条款。
答案 7 :(得分:0)
一种方法是不对密码设置许多限制,但有一个用户无法使用的密码列表。以下是无法在Twitter上使用的密码列表:
http://www.techcrunch.com/wp-content/uploads/2009/12/Twitter-banned-passwords.txt
这会过滤掉最弱的密码,同时仍然让用户选择他们想要的密码。
答案 8 :(得分:0)
我认为你使用的政策是好的。但是你永远不应该将某人的密码存储在数据库中。我建议添加用户名(如果它无法更改;否则可能是id)并构建一个哈希值。总是如果你检查一个密码,你再次添加用户名并构建校验和(sha512没问题)并测试它是否与存储在数据库中的相同。也许添加一个恒定的随机盐是一件好事。 (也像用户名一样)
你可能会得到类似sha512(“myname_password_4235329659”)的内容。
这使得使用rainbowtable几乎不可能。
答案 9 :(得分:0)
我认为你应该这样缩小范围:
Use:
Email Address as Username;
Password must be strong by forcing a rule as follows:
Alphabets(in small or capital),
Numbers
Characters(#,&,*, !...)
must include at least one of these and must be 6 or more in length
Case sensitivity must be applied when signing in
Hint: Use a password generator as an assistance
A security question and answer for later recovery of username or password or
simply use birth date validation for this