用于键盘糖化的正则表达式

Mar*_*ain 6 python regex fraud-prevention

注册新帐户时,网络应用程序通常会询问"安全问题"的答案,即狗的名字等.

我想通过我们的数据库查找用户只是捣乱键盘而不是提供合法答案的实例 - 这是滥用/欺诈帐户的高指标.

"母亲的娘家姓?" lakdsjflkaj

关于我应该如何做这个的任何建议?

注意:我不仅仅在这些'安全问题答案'上使用正则表达式

'答案'可以是:

  1. 使用一些基本的sql正则表达式从db中选择

  2. 使用python正则表达式分析必要的次数

  3. 根据需要比较/修剪/得分

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

谢谢!

tan*_*ius 40

我不会这样做 - 在我看来这些问题削弱了安全性,所以作为一个用户我总是尝试提供另一个半密码作为答案 - 对你来说它想要捣碎.嗯,它是捣碎的,但这正是我想要做的.

顺便说一句.我不确定你可以查询答案的事实.由于他们克服了您的密码保护,因此应该像密码一样处理=存储为哈希!

编辑:
当我读到这篇文章时,我立刻想起了这个问题;-)

  • 该答案中的每一段都应该有一个单独的upvote. (12认同)
  • 我总是将键盘捣碎为这些; "安全问题"是不安全的.如果一个网站告诉我"不,你*给我你母亲的婚前姓名",或者因为我理解基本安全而被指控虐待,我会非常愤怒.(我不在乎你是否正在寻找技术解决方案;当你要求的东西听起来像是一个更糟糕的想法之外的天生坏主意时,你只需忍受人们告诉你的事情. ) (2认同)

nik*_*nik 12

安全问题的整个方法存在很大缺陷.

我总是发现人们把安全答案比他们使用的密码弱.
安全问题只是安全链中的另一个环节 - 链接较弱!

IMO,更好的方法是允许用户请求发送到他们注册的电子邮件ID的新密码.这有两个好处.

  1. 蛮力企图必须首先找到并破坏电子邮件服务(而且,你永远不会帮助他们 - 保持注册电子邮件ID非常受保护)
    • 当有人尝试使用暴力破解时,您的服务用户将始终得到指示(他们收到邮件说他们试图重新生成密码)

如果你必须有秘密问题,让他们触发重新生成(永远不会发送用户密码,重新生成临时,最好是一次性强制)密码发送到他们注册的电子邮件ID - 并且,不要显示一点都不

另一个技巧是让秘密问题ITSELF注册电子邮件ID.
如果他们说得对,您可以将重新生成的临时密码发送到该电子邮件ID.


bal*_*pha 6

使用正则表达式无法做到这一点.实际上,我根本无法想出一个合理的方法 - 你会在哪里划出可疑和不可挽回的界线?我曾经一次经常用一个模糊的答案回答安全问题.毕竟,我母亲的婚前姓不是最难找到的.


its*_*dok 5

你可能最好分析n-gram分布,类似于语言检测.

此代码是使用trigrams进行语言检测的示例.我的猜测是键盘粉碎三卦非常独特,不会出现在普通语言中.