数据库|为什么密码设置为“jK8v!ge4D”仍然不安全?


编者按:如果你仔细留意的话 , 你会发现 , 在大多数平台上 , 当你创建账号时 , 平台或系统会对你的账号密码设置设定一系列要求 。 其中 , 最常见的就是 , 密码设置必须包括一个大小写字母、数字和特殊符号 , 并且密码不得少于8个字符 。 然而 , 这并不是安全的密码设置方式 。 这篇文章 , 北京联盟_本文原题是Why jK8v!ge4D isn’t a good password , 前端开发师Jacob Bergdahl在文章中分析了这种密码设置方式的不安全性 , 同时又跟大家分享了一种更安全的密码设置方式 , 希望对你有用 。
数据库|为什么密码设置为“jK8v!ge4D”仍然不安全?
本文插图

图片来源:Unsplash.com
首先 , 请仔细看看下面两组密码 。 你认为破解哪组密码更简单呢?你认为哪组密码更方便记忆呢?
jK8v!ge4D(含大小写字母、数字和符号)
greenelephantswithtophats(戴着礼帽的绿色大象)
对于这个两个问题 , 无论从破解容易度 , 还是记忆方便度来说 , 答案都是第二组密码 。
然而 , 在各种互联网的各种平台上 , 我们仍然在采用看起来像第一组密码的方式来设置密码 。 大家都想当然地认为 , 只要密码设置地过于复杂 , 不方便记忆 , 那这个密码就不容易破解 。
接下来 , 我们就详细来聊聊这个话题 。
在互联网标准方面 , 实际上存在许多奇幻的事情 。 其中 , 就包括验证 。 作为一名前端开发者 , 我的工作就包括去验证用户输入在那些所谓“输入框”中的内容 。 这些所谓的输入框 , 包括用户名、邮箱地址、家庭住址、电话号码等等 。
作为前端开发者 , 我们的工作职责就是要保证用户在使用我们的产品过程中 , 不会恶意输入或者错误输入不符合既定格式要求的文本内容 。
例如 , 邮政编码文本框通常就只允许填入空格和数字 。 如果我们知道用户来自哪个国家 , 我们还可以对这个文本框的格式做出更加明确的限制 。 电话号码文本框通常都包括一系列数字 , 一个加号符号(通常都在最前面) , 以及一个破折号 , 有的情况下可能还包括圆括号 。
邮箱地址的验证就相对麻烦 。 然而 , 常规的做法是 , 它必须包括“@”符号 , 然后后面还需要包括一个小数点 。 在某些网站 , 他们会要求用户在填写用户名的过程中 , 限制用户填入的名字字符长度 , 有的还会限制其只能选用某些特定的字符 。
验证之所以存在 , 主要是基于以下几个原因 。
首先 , 安全因素 。 验证可以防止用户在文本框中输入乱七八糟的信息 , 从而增加改变数据库或者引发其它恶意行为的可能性 。
其次 , 它可以确认某种特定的数据类型 。 如果某个文本框只能包含数字的话 , 数据库工程师就可以以此来建立一个仅含数字的数据库 。 这即意味着 , 如果出现了非数字字符的话 , 就可能会出现错误 。
然而 , 验证存在的最核心原因 , 实际上是帮助用户避免错误 。
数据库|为什么密码设置为“jK8v!ge4D”仍然不安全?
本文插图

图片来源:Pexels.com
用密码设置规则来迫使你设置密码
从某种程度上来讲 , 前端开发者应该为用户提供全方位的帮助 , 让用户设置并输入一个从传统意义上来讲非常安全的密码 。 它至少应该包含8位字符 , 其中还包括大小写字母、一个数字 , 如果还没有安全感的话 , 甚至还可以加入感叹号等特殊符号 。
基于此 , “jK8v!ge4D”通常都会被视作是一个非常安全的密码典范 。 毫不夸张地说 , 在绝大多数的互联网平台上 , 平台都会要求你按照这种模式来设置密码 , 因此 , 你可能就会认为 , 这种组合的密码就是非常安全的密码 。
然而 , 这种组合的密码并不安全 。 它反而是非常愚笨的密码设置方式 , 是一个极容易被破解的密码 。


推荐阅读