我正在为一个Web应用程序进行用户注册,并且刚开始认为我不想让一些聪明/邪恶的人出现并注册一个用户名,如'admin'.
我应该禁用哪些其他用户名?数据库关键字
有关系吗?
在此先感谢您的回复!
编辑:我有安全保障.我更感兴趣的是,人们常常禁止某些名字阻止人们伪造权威,甚至某些垃圾邮件喜欢注册的词语.
Eli*_*jah 33
作为一般政策,我通过以下方式限制我设计的系统上的用户名:
问题实际上取决于您的使用.如果您的用户名只是与网络论坛上的用户相关联的名称,那么这并不重要.但是,如果用户名是具有安全性问题的大型系统的一部分,则应该有一个策略.不正确的用户名的主要危险在于,黑帽子可以利用它们作为社会工程无辜用户泄露敏感信息的一种方法.
有趣的是,在发布这个答案之后,我检查了Stack Overflow的用户名验证,它确实禁止像我建议的unicode字符.但是,它确实给出了一个神秘的错误,说用户名是"保留的".
Eva*_*her 15

但是,严肃地说,过滤掉包含潜在恶意代码的名称是个好主意.除此之外,任何反仇恨/巨魔/垃圾邮件/*审查都取决于您和/或您的社区.
说真的,您需要确保在进入数据库之前正确转义任何用户生成的数据(不仅仅是用户名).这将确保您的用户无法进行SQL注入攻击(例如由Evan Meagher链接的Bobby Tables卡通).如果您的用户想要使用"Robert'); DROP TABLE"这样的用户名登录,那么请让他们冷静下来.只要确保它不会损害您的数据库.
同样,如果您在网站上的任何位置显示用户名,请确保您的html特殊字符已正确编码,以防止他们将<script>标记和javascript注入您的输出(XSS漏洞).例如,用户名为"<script> alert('Hi'); </ script>"的用户永远不应该看到警告框.
如果没有理由为什么你应该禁止看起来像SQL注入或XSS攻击的用户名,只要你绝对确保用户不会对系统造成任何伤害.
如果您提供与用户名相关的任何电子邮件服务(例如网络邮件服务),您将需要确保用户无法使用RFC 2142保留的电子邮件地址之一进行注册(或者您在启动之前自行注册它们.
最后,有一个非技术原因.如果该人的用户名出现在网站的任何地方,则可能需要禁止用户名,如"admin","administrator","root","sysadmin","webmaster","版主",因为这些用户名可能意味着某种形式拥有或控制该网站给另一个用户.您可能只希望网站所有者能够暗示他们拥有该网站.在所有情况下都可能不需要这样做.