Day04-入口管制(三)

前言

前两天讲完基本的格式、语义检查後,今天特别来讲一下关於 email 的部分

大部分网站希望使用者留下 email 一来是避免使用者大量注册,二来是日後可以透过这些 email 联络到使用者,所以这些 email 能不能确实达到他的效果就很重要了

Sub Account

首先来说说第一个「不希望使用者大量注册」,很多网站在第一次注册时会给一些优惠券,像第一次用 Google Cloud Platform(GCP) 时他就会送你 300 镁的试用额度,所以他当然不希望你一直用不同的帐号去试用(300 镁真的还不少XD)

但很不巧的是,Gmail 本身就有提供 sub account 的功能,譬如说 larrylu86@gmaillarrylu86+1@gmail 虽然长得不一样,但信确实会寄到同一个地方,而且除了加数字之外也可以改成 larrylu86+handsome@gmail。换句话说只要有一组 Gmail,你就有无限多组不一样的信箱,所以怎麽防堵同一个使用者大量注册就变成一个问题

很巧的是,昨天讲的 validator(Node.js)govalidator(Go) 刚好可以帮忙解决这个问题,只要把使用者输入的信箱丢进去做 normalize 之後就可以拿到正规化之後的信箱格式,也就可以防止这种基於 sub account 的大量注册

// Node.js examples
validator.normalizeEmail("[email protected]") // "[email protected]"
validator.normalizeEmail("[email protected]")    // "[email protected]"
// Go examples
govalidator.NormalizeEmail("[email protected]")  // "[email protected]"
govalidator.NormalizeEmail("[email protected]")   // "[email protected]"

Disposable Email

解决了子帐号的问题後,另外一个令人头痛的问题是用完即丢的 email。现在只要上网搜寻 disposable/temp email 就可以找到很多类似的服务,这边以搜寻结果第一名的 Temp Mail 作为例子

进到网站後就会看到他帮我随机生成了一个临时的 email,接着我用我真正的 email 寄一封 Larry is handsome 过去,不用几秒马上就可以在临时的收件夹内收到

因为这种一次性的 email 实在太方便快速,日後也完全不会收到垃圾信,所以有越来越多人开始用这种 email 去注册多组帐号

为了防止这种情况,我要跟大家介绍一个由 Kickbox 提供的 API,只要你发 GET 请求去打 https://open.kickbox.com/v1/disposable/{domain},他就会告诉你这个 email domain 是不是一次性的。譬如说我想验证使用者填的 [email protected] 是不是 disposable email,那下 curl https://open.kickbox.com/v1/disposable/zwoho.com 就可以知道 zwoho.com 是 disposable email,而 gmail.com 就不是

有了这个 API 後就可以有效防堵一些 disposable email,虽说这个 API 的结果不一定百分之百准确(可能有些比较新的临时网域还没被加入),但大部分情况还是可以辨识出来

小结

今天介绍了两个用来辨识 sub account 以及 disposable email 的方法,虽然这两个方法不能完全防堵恶意的攻击者进行大量注册,但至少可以提高攻击者的成本,从原本一个 gmail 打天下变成要寻找冷门的 disposable email,而且要自动化也会变得更麻烦,因此若是带来的效益不够大他们可能就懒得做了。


<<:  自动化测试,让你上班拥有一杯咖啡的时间 | Day 5 - 执行自动化测试脚本

>>:  Day4 让我们来 Build 出自己的 NiFi 服务吧

Day29 Redx初步介绍

使用目的 随着时代的进步,人们对单一页面的要求日渐复杂化,从过去的静态页面,到後来需要包括服务器回应...

Ruby基本介绍(四)

基本上大叔宅男不是很想放男团K-pop, XD 本篇会提到的 定义方法 回圈(loop) 定义方法 ...

vok-orm 删除关连资料 - day11

vok-orm 删除关连资料 由於 vok-orm 非 JPA、Hibernate 那一类的框架,查...

Ruby on Rails layout

只能⼀个版型吗? 如果你喜欢,可以有多种款式的版型,预设的版型是 app/views/layouts...

集合推理与欧拉图

上一篇介绍了文氏图与 SQL 的集合的应用,这一篇要介绍的是欧拉图,欧拉图与文氏图不同之处,在於它主...