Heim >Backend-Entwicklung >PHP-Tutorial >怎么限制一个人只能注册一个账号(防注册机)?IP?EMAIL?验证马

怎么限制一个人只能注册一个账号(防注册机)?IP?EMAIL?验证马

WBOY
WBOYOriginal
2016-06-13 09:59:252947Durchsuche

如何限制一个人只能注册一个账号(防注册机)?IP?EMAIL?验证马?
EMAIL没用,可以随便注册很多,验证链接也没用。
根据IP限制的话,动态IP和共享IP,也不行。
验证码,貌似无用,上次看到一个腾讯的验证码都能识别了。
费尽心思研究半天验证码分分钟就被识别麻烦,用户输入也麻烦。


也不能跟用户要身份证号码。有什么办法可以识别一个人呢,让一个人只能拥有一个ID。
还要尽量减少用户需要输入的信息。

------解决方案--------------------
强调两个设计原则:

1. 所有的安全防护都是“相对”的,没有“绝对的严密”。

2. 明确你的首要目标,根据目标确定方法。

考察一下楼主的原始需求,其实是“防注册机”,是吧?

并不是要“实名”,也不一定要求“每个 IP 只能注册一个号”,这些都是拿来作为“方法”的,而这些方法显然并不是很有效。

其实最有效的,还是“验证码”。别觉得验证码那么容易破解,首先看你的网站是否有那么高的价值让人家专门花心思来破解,如果真是很有价值的话,你肯定也会有足够的资金支持来完善验证码的实现了 :)

另外,邮箱验证也可以作为一个简单有效的辅助手段。
------解决方案--------------------
所谓“防注册机”,从原理上讲大概是这样的:在执行一个关键任务(比如注册一个帐号)之前,在页面上设计一个只有真人才能完成的交互任务(比如从一个图片中识别出几个字符),从而得到一个令牌(比如验证码),只有把这个令牌一并提交到服务器,才能启动关键任务。

常见的图片验证码,是一个最简单的实现。如果发挥想象,尽可以创造性地发明各种实现方法。比如我看到有的网站在发帖前要回答一个问题,可能是算术题,也可能是其它问题,对于真人来说,很容易输入答案,而对于“机器人”来说,就有一定难度了(当然如果有黑客专门针对它进行穷举和识别,也是有希望破解的)。

再比如我还见过有的网站是播放一段声音,然后要求用户输入听到的单词。

另外像 Android 手机上的一种“九宫格划屏解锁”的交互方式,也可以借用来防注册机:在页面上显示一个或一组图片,再以文字方式(文字也可以显示在图片里)指导用户做一系列点击操作,通过 AJAX 的方式把鼠标动作发送到服务器,如果正确的话,服务器就向客户端提供一个令牌。

这些实现方式都有一个特点(包括图片验证码),只要你的基本逻辑实现了,即使被破解了,那么只要对算法稍做调整,就可以使原有的破解失效。安全工作没有一劳永逸的。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn