我正在为一个Web应用程序进行用户注册,并且刚开始认为我不想让一些聪明/邪恶的人出现并注册一个用户名,如'admin'.
我应该禁用哪些其他用户名?数据库关键字
有关系吗?
在此先感谢您的回复!
编辑:我有安全保障.我更感兴趣的是,人们常常禁止某些名字阻止人们伪造权威,甚至某些垃圾邮件喜欢注册的词语.
作为一般政策,我通过以下方式限制我设计的系统上的用户名:
用户名必须低于ascii - 这不包括可用于欺骗用户的unicode用户名.例如,当您将unicode包含在用户名中时,名称"admin"和"admin"是单独的用户名,但可能与毫无戒心的用户相同.
用户名必须是唯一的 - 不建议使用用户名作为唯一标识符,但如果将其用作电子邮件或登录,则将其作为唯一值仍然有意义.
用户名与保留关键字不冲突 - 禁止用户名成为常见的系统用户名非常有用,因为它是社交工程的一种途径,黑帽子可以使用它来欺骗系统上的用户.这意味着,应该阻止admin,webadmin,postmaster,root,administration,sysadmin等.更重要的是,如果您将使用REST样式的URL系统,请确保用户名不会与您将来可能包含的任何潜在路径冲突.
用户名被清除 - 重要的是从输入的用户名中删除任何html或css标记,以防止XSS攻击或可能的用户冒充尝试.另外,不要忘记从用户名中修剪前导和尾随空格字符.
问题实际上取决于您的使用.如果您的用户名只是与网络论坛上的用户相关联的名称,那么这并不重要.但是,如果用户名是具有安全性问题的大型系统的一部分,则应该有一个策略.不正确的用户名的主要危险在于,黑帽子可以利用它们作为社会工程无辜用户泄露敏感信息的一种方法.
有趣的是,在发布这个答案之后,我检查了Stack Overflow的用户名验证,它确实禁止像我建议的unicode字符.但是,它确实给出了一个神秘的错误,说用户名是"保留的".
但是,严肃地说,过滤掉包含潜在恶意代码的名称是个好主意.除此之外,任何反仇恨/巨魔/垃圾邮件/*审查都取决于您和/或您的社区.
保持人们不被"授权发声名称"欺骗的最好方法就是以某种其他方式区分"权威"(即你在帖子中有特殊的文字颜色,你有特殊的图标或头像等等) ).
如果您的用户名构成了URL的一部分,则可能需要禁用以下部分或全部内容:
API
公测
博客
演示
论坛
论坛
苹果手机
移动
安全
SVN
博客
欢迎
万维网
说真的,您需要确保在进入数据库之前正确转义任何用户生成的数据(不仅仅是用户名).这将确保您的用户无法进行SQL注入攻击(例如由Evan Meagher链接的Bobby Tables卡通).如果您的用户想要使用"Robert'); DROP TABLE"这样的用户名登录,那么请让他们冷静下来.只要确保它不会损害您的数据库.
同样,如果您在网站上的任何位置显示用户名,请确保您的html特殊字符已正确编码,以防止他们将