在签署了新的帐户,网络应用程序通常要求的答案的一个'安全问题',即狗的名称、等等。

我想通过我们的数据库,并寻找实例,用户只是捣碎的键盘的,而不是提供一个合理的答案-这是一种高指标的虐待/欺诈性的帐户。

"母亲的婚前名字?" lakdsjflkaj

任何建议如何我应该去做这个?

注:我不仅使用经常表达这些安全问题的答案'

在回答'可以是:

  1. 选自一个数据库使用的一些基本sql regex

  2. 分析为根据需要多次使用python regex

  3. 相比/修剪/评定为需要的

这是一个技术问题,不是一个哲学的一个 ;-)

谢谢!

有帮助吗?

解决方案

你可能是更好的分析n-gram分配,类似语言的检测。

这个代码 是一个例子检测使用语言卦.我的猜测是键盘砸卦是相当独特和不出现在通常的语言。

其他提示

我不会这么做的-在我看来这些问题削弱安全,这样作为用户我一直尝试提供的另一半密码作为一个答案-你会喜欢土豆泥.好,就是泥,但这正是我想要做的。

顺便说一句.我不知道有关事实上,你可以查询的答案。由于他们克服你的密码保护他们应该处理,如密码=储存作为一个哈!

编辑:
当我阅读 这篇文章 我立刻想起这一问题;-)

整个做法的安全问题是相当有缺陷的。

我总是发现 人们把安全回答弱于他们使用的密码.
安全问题,都是一个更多的链接在一个安全链--较弱的链接!

海事组织、一个更好的方式走会来 允许用户要求一个新的密码发送到他们的注册的电子邮件id.这有两个好处。

  1. 的暴力尝试已找到并打破电子邮件服务的第(而且,你将永远不会帮助他们在那里--保持注册的电子邮件id非常受保护的)
    • 用户服务的总是会得到的指示,当有人试图暴力破解(他们得到一个邮件说,他们试着重新生成了他们的密码)

如果你必须具有秘密的问题,让他们触发的一再产生的(从来没有发送用户密码,重新生成的临时,最好一次被迫)密码分派到电子邮件id他们登记--而且,不显示,在所有。

另一招是 做秘密的问题本身,他们的注册的电子邮件id.
如果他们把它正确的,你发送一个 重新产生的 临时密码,以电子邮件id。

有没有办法做到这一regex.实际上,我想不出合理的方式来做到这一点,在所有--你会在哪里画的线之间的可疑和unsuspicious?我有一次,往往答案的安全问题有一个模糊的回答。毕竟,我母亲的名字不是最难的事情找出来。

如果你能找到一个列表中的字母-对概率在英语中,你可以构建一个大致的概率的单词不是"真实"的文字,使用尽可能少对,对,不在名单。不幸的是,如果你有名称或其他"非的词语"然后你不能强迫他们以英文字。

也许你可以检查丰富的辅音。例如,在你的例子 lakdsjflkaj 有2个元音字母(a)和9的辅音。通常的概率撞上一个元音时随机的按键远低于一个打一个辅音。

Dejunk 是一个红宝库,从中可以汲取灵感。它实现了一些建议在其他的答案。它认为,输入键盘捣碎如果输入:

  • 包含符的双字母组不大可能出现在真实的文本,但是紧靠在一起的键盘上。(库包括一系列这样的双字母组.)
  • 开始与一个意想不到的标点符号。
  • 有太多的非常短的话。
  • 没有元音。
  • 有人物,是重复的一个不合理的次数。

你可以检查一个大写字母的开始。...那会让你有些误报肯定的。

一个快速的谷歌给我 , 你可以比较每次对一名在此列。

显然只适用于安全问题说明。

你也看到这个:

解剖的twitter的攻击

我会仔细想想下一次我实现安全的问题。

如果你的问题是以往一些相关的一个真实的,人的名字,这是不可能的。考虑亚洲地名类型的罗马字符;他们很可能旅行的任何过滤你来了,但是仍然完全合法的。

你可以寻找模式没有意义的发音。例如:

"q"不接着一个'u'。

航空自卫队

qwer

zxcv

asdlasd

基本上,尝试混合在自己的键盘,看看你得到什么,以及塞在你的过滤器。还插在各种语法规则。然而,由于它的名称正在处理的,你总是会得到'那人'与奇怪的名字,他们会造成一种虚假正面的。

而不是常规的表达,为什么不只是比较有已知良好的价值观?例如,比较母亲的娘家姓与人口普查数据,或宠物的名字有任何宠物的名称列出的可以在网上找到。对于一个更简单的版本,只是做一个谷歌搜索无论是输入的。合法的名称应该有足够的结果,同时键盘糖化应该导致很少有(如果有)。

与任何其他方法,必将仍然需要处理的误报。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top