前两天讲完基本的格式、语义检查後,今天特别来讲一下关於 email 的部分
大部分网站希望使用者留下 email 一来是避免使用者大量注册,二来是日後可以透过这些 email 联络到使用者,所以这些 email 能不能确实达到他的效果就很重要了
首先来说说第一个「不希望使用者大量注册」,很多网站在第一次注册时会给一些优惠券,像第一次用 Google Cloud Platform(GCP) 时他就会送你 300 镁的试用额度,所以他当然不希望你一直用不同的帐号去试用(300 镁真的还不少XD)
但很不巧的是,Gmail 本身就有提供 sub account 的功能,譬如说 larrylu86@gmail
跟 larrylu86+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]"
解决了子帐号的问题後,另外一个令人头痛的问题是用完即丢的 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 服务吧
使用目的 随着时代的进步,人们对单一页面的要求日渐复杂化,从过去的静态页面,到後来需要包括服务器回应...
基本上大叔宅男不是很想放男团K-pop, XD 本篇会提到的 定义方法 回圈(loop) 定义方法 ...
vok-orm 删除关连资料 由於 vok-orm 非 JPA、Hibernate 那一类的框架,查...
只能⼀个版型吗? 如果你喜欢,可以有多种款式的版型,预设的版型是 app/views/layouts...
上一篇介绍了文氏图与 SQL 的集合的应用,这一篇要介绍的是欧拉图,欧拉图与文氏图不同之处,在於它主...