Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测到网站上的奇怪注册模式_Javascript_Node.js_Bots_Spam Prevention - Fatal编程技术网

Javascript 检测到网站上的奇怪注册模式

Javascript 检测到网站上的奇怪注册模式,javascript,node.js,bots,spam-prevention,Javascript,Node.js,Bots,Spam Prevention,我上周发布了我的第一个web应用程序(node/express后端,运行在Heroku服务器上),我已经在日志中看到了一些奇怪的注册行为 起初,我以为这是真正的用户,但同样的模式已经发生了很多次,很明显它是某种垃圾邮件机器人 我的网站包含一个注册表单,需要名,姓,电子邮件,密码1和密码2(必须匹配)。在提交表单时,用户必须单击其他按钮以选择他们希望注册的帐户类型,并向提供的地址发送电子邮件进行验证 在过去的几天里,我收到了很多(大约10个)可疑的注册,浏览模式如下(昨晚的两个例子): 在任何情况

我上周发布了我的第一个web应用程序(
node/express
后端,运行在
Heroku
服务器上),我已经在日志中看到了一些奇怪的注册行为

起初,我以为这是真正的用户,但同样的模式已经发生了很多次,很明显它是某种垃圾邮件机器人

我的网站包含一个注册
表单
,需要
电子邮件
密码1
密码2
(必须匹配)。在提交表单时,用户必须单击其他按钮以选择他们希望注册的帐户类型,并向提供的地址发送电子邮件进行验证

在过去的几天里,我收到了很多(大约10个)可疑的注册,浏览模式如下(昨晚的两个例子):

在任何情况下,
用户
都有:

  • 导航到主博客页面(其中包含博客帖子列表)
  • 导航到注册页面,输入有效的
    表单
    数据并提交表单。在任何情况下,
    firstname
    lastname
    都是毫无意义的、看似随机的字符串(例如
    firstname:'iluuuxpmv',lastname:'Yrtkaugn'
    firstname:'Qatocgyp',lastname:'Hdfurawghgkqs'
  • 发送的电子邮件未经验证
  • 用户
    然后导航到登录页面并尝试连续两次重置密码
  • 用户
    然后导航到一个特定的博客帖子五次
  • 我的第一个问题是如何才能阻止这种情况

    更广泛地说,我感兴趣的是为什么这些(大概)机器人会以这种奇怪的方式浏览我的网站

    如果这是一个垃圾邮件机器人,看起来很奇怪,这种情况只发生了10次左右,然后他们点击不包含表单的非随机页面

    有什么解释可以帮助我防止这种情况发生吗?

    如果问题是“如何阻止这种情况?”,那么答案是您可能无法完全阻止它,但您可以添加一些额外的安全性或验证。理想情况下,在服务器端添加安全措施,因为这是非常有争议的,因为这是安全实际发生的地方。验证也可以在客户端进行,但只是可以更容易地撤消或绕过

    一些快速的胜利可以是-

    白名单而非黑名单

    不要坐在那里,在许多条件下工作,在这些条件下,您的验证应该会发现错误。这将很快过时,您必须对其进行更新。i、 e.不要将某些值或条件列入黑名单,然后传递所有其他未捕获的值或条件

    相反,白名单-因此提供一组验证通过的条件。然后所有不通过的都会失败,并且不会提交。这使您的应用程序始终能够继续允许您确保允许的内容以及所有其他更改输入/绕过技术失败

    在注册页面中添加计时器

    普通用户至少需要几秒钟的时间来输入他们的详细信息并选择合适的密码等,而机器人则不会。机器人几乎会立即执行脚本。这意味着您可以实现一个计时器,并在表单上提交时检查计时器是否小于3秒左右。如果是,请阻止提交并重定向用户

    重命名您的电子邮件字段并误导

    您可以有两个电子邮件字段,而不是一个电子邮件字段,但其中一个是隐藏的

    <input type="hidden" value="" name="email" id="email" placeholder="Enter your email..."> 
    <input type="email" value="" name="eee" id="eee" placeholder="Enter your email...">
    
    
    
    机器人将搜索任何字段并尝试输入有效输入以成功提交。因此,机器人会找到现在隐藏的假字段“email”并填写它,但是普通用户应该看不到该字段。因此,当表单提交时,只需检查隐藏字段中是否有空字符串以外的值

    确保没有相等的输入

    很多垃圾邮件机器人只是在每个输入中输入相同的值。虽然您给出的示例似乎并非如此,但这是经常发生的情况。他们可能只是输入
    iamafakebot@fakeemail.com
    关于名字、姓氏、电子邮件和密码-假设这将允许根据预期字段成功提交

    因此,您可以比较提交的值,如果它们彼此相等,则无法提交表单,甚至无法显示用户可读的消息

    结论

    这可能无法从整体上解决您的问题,因为安全性是一个庞大的主题,有许多不同的观点和不断更新的条件-但是,这些至少会为您的应用程序增加一些额外的安全性


    希望其中一个适用于您的场景,并且您的系统中看到的机器人越来越少。

    在登录时放置验证码或要求进行一些数学计算如何?防止它的目的是什么?@brk-如果这是最好的方法,那么我想我可以研究一下,但对我来说,这似乎总是一个糟糕的用户体验@阿切尔:这是个好问题。我想主要是因为我担心这会扩大规模(每天10000个假注册),这会让我的数据库充满未经验证的用户。我还担心电子邮件地址是真实的,我会因为垃圾邮件而被举报,我的发件人分数会降低。不幸的是,你无法用真实的电子邮件地址来处理虚假注册,但这种情况不太可能经常发生。至于数据库,只需删除一两天后尚未验证的注册用户。每天做一次(有计划的任务),这样可以防止垃圾进入系统
    <input type="hidden" value="" name="email" id="email" placeholder="Enter your email..."> 
    <input type="email" value="" name="eee" id="eee" placeholder="Enter your email...">