V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yzn
V2EX  ›  程序员

请教防止恶意注册的方法,急!!!

  •  1
     
  •   yzn · 2015-07-07 11:04:58 +08:00 · 12654 次点击
    这是一个创建于 3217 天前的主题,其中的信息可能已经有所发展或是发生改变。
    发现网站有恶意的注册,可以基本肯定不是人手动恶意注册。

    采取过的手段:
    1、修改注册页面的文件名。(可保短暂的安宁)
    2、更换了N个图片验证码、计算形式的验证码、也都用了,也只能短暂平静。
    3、利用cookies、session记录IP,限制一个IP一天只能注册一次,我自己测试完全可以限制住,第一次注册可以正常完成,第二次就注册不了,但不知道为什么这限制对于这次的恶意注册一个点用都没

    我也想过会不会是直接SQL的注入,但从我的处理方法中可以得出结论,必须要通过那个页面才能注册的,而且我这边在代码中直接限制谁都不能注册,结果也可以限制住。

    希望高手们帮忙分析下这问题是怎么回事,要怎么样解决下,折腾了两天了,还是没弄好,着急上火了,大家帮帮忙,跪谢了!
    52 条回复    2015-07-08 23:51:11 +08:00
    foccy
        1
    foccy  
       2015-07-07 11:21:56 +08:00
    利用cookies、session记录IP对于恶意攻击应该没用吧?客户端不携带session id就可以失效。我觉得英爱记录在文件,或者数据库或者其他类似的地方,而不是session。
    jnduan
        2
    jnduan  
       2015-07-07 11:27:43 +08:00
    人家是挂着代理注册的吧?

    解决这个问题估计必然会导致注册流程体验的下降

    1.更复杂的验证码,增加ocr的成本
    2.注册验证机制,例如发送激活邮件
    3.短信验证码
    等等
    wkdhf233
        3
    wkdhf233  
       2015-07-07 11:30:05 +08:00
    短信验证码
    惹急了上邀请码,邀请码需要加你QQ要
    tini22
        4
    tini22  
       2015-07-07 11:31:30 +08:00
    中文验证码 + 扭曲变形 + 文字粘连
    FastMem
        5
    FastMem  
       2015-07-07 11:39:58 +08:00
    目前是邮箱验证加邀请码
    wy315700
        6
    wy315700  
       2015-07-07 11:40:45 +08:00 via Android
    手机验证码
    sweat89
        7
    sweat89  
       2015-07-07 11:45:21 +08:00
    限制一个IP一天只能注册一次
    你在逗我呢
    shiznet
        8
    shiznet  
       2015-07-07 11:49:42 +08:00
    限IP会误伤,有些办公网公用一个出口IP。

    增加下行短信验证,这样会增加短信的费用,但是可以防止机器批量注册。短信验证时最好配合验证码,否则下行短信接口可能会被人用来做短信炸弹。

    对于批量注册,id通常都是有规律的,可以查看日志,对于短时间内集中注册的有规律的用户名可以监控起来。
    yzn
        9
    yzn  
    OP
       2015-07-07 11:50:10 +08:00
    嗯,但目前还没到那种地步,希望可以多积累一些用户。
    yzn
        10
    yzn  
    OP
       2015-07-07 11:50:39 +08:00
    @wkdhf233 嗯,但目前还没到那种地步,希望可以多积累一些用户。
    wizardoz
        11
    wizardoz  
       2015-07-07 11:53:07 +08:00
    不要从技术的角度限制,IP限制更是不靠谱。
    用邮箱注册或者手机号注册最好,业务上说也是合情合理。
    yzn
        12
    yzn  
    OP
       2015-07-07 11:53:27 +08:00
    @shiznet 注册限制太多,影响网站壮大发展与用户体验。就是想现在有没有什么工具软件之类,像防水墙这种。不过防水墙太水了,也没有起到相应作用。
    OpooPages
        13
    OpooPages  
       2015-07-07 12:28:24 +08:00 via Android
    懒惰安全的做法,是不是可以直接使用第三方帐号接入?
    比如github oauth接入
    laiyingdong
        14
    laiyingdong  
       2015-07-07 12:39:20 +08:00
    限IP不好 据说现在有 “ADSL VPS” 估计就是这么用的

    我觉得可以选择性的使用 邮箱 手机或者是QQ 百度 微博Oauth之类的方式去进行验证 保证用户体验的同时还是可以防的住的
    nozama
        15
    nozama  
       2015-07-07 12:53:56 +08:00
    第三方登录更多是吸引用户注册的手段, 不能本末倒置吧
    从业务流程上改进, 像Stackoverflow那样, 没有威望就只能旁观. 僵尸再多也是枉然.
    realpg
        16
    realpg  
       2015-07-07 12:58:03 +08:00
    这就需要各种黑科技了……
    别按正常套路出牌。。。
    denger
        17
    denger  
       2015-07-07 13:08:56 +08:00
    建议学学 qq. http://zc.qq.com/chs/index.html
    研究一下人家的规则吧, 就目前国内来说 qq 这方面做的是不错的~
    janxin
        18
    janxin  
       2015-07-07 13:23:31 +08:00
    IP限制很不友好,推荐你直接上中文验证码+短信验证码,最后才限制ip注册上限(一个肯定不合理)

    实在不行就邀请码机制,限码
    shiniv
        19
    shiniv  
       2015-07-07 13:44:07 +08:00
    @yzn 看到防水墙,应该就是discuz吧?如果是discuz的话,可以改改获取IP那部分,获取IP这部分是可以伪造的。
    fraudmetrix
        20
    fraudmetrix  
       2015-07-07 15:28:43 +08:00
    基本上像论坛这种情况,是普遍存在的。你可以尝试一下第三方平台的接入http://www.tongdun.cn/activity/A201506.html?1 以我多年社区管理的经验,这种方式目前比较奏效。
    它可以针对登录,注册,发帖等事件,调用第三方的API接口,通过分析设备指纹,IP,发帖速度进行风险识别。只要是高风险,就无法注册,无法登录。比DZ自带的好用多了。
    blaboy
        21
    blaboy  
       2015-07-07 16:09:45 +08:00 via Android
    语音验证码,下拨到用户手机。
    kn007
        22
    kn007  
       2015-07-07 16:38:37 +08:00
    语音验证码+1
    branchzero
        23
    branchzero  
       2015-07-07 16:42:27 +08:00
    语音验证码 +10086
    图形验证码的话,市面上一堆打码平台可破。。。
    binyuJ
        24
    binyuJ  
       2015-07-07 16:43:12 +08:00
    话说用那种传说中的“汉字顺序并不影响阅读”来做验证码的话效果如何?验证码是乱序的让用户输正常顺序的
    learnshare
        25
    learnshare  
       2015-07-07 16:43:13 +08:00
    邮箱邮件验证,手机短信验证
    timor
        26
    timor  
       2015-07-07 17:00:00 +08:00
    短信验证防不住.
    语音验证码靠谱.
    www.yuntongxun.com
    一直在用这家.
    clino
        27
    clino  
       2015-07-07 17:12:33 +08:00
    要不用户输入邮箱以后点击收到的邮箱链接才能注册,链接只针对此邮箱用户可用
    这样稍微会麻烦点哈
    elyamen
        28
    elyamen  
       2015-07-07 17:16:49 +08:00
    要不您学学12306,整个请选出以下图中所有的蔬菜?
    Imyssed
        29
    Imyssed  
       2015-07-07 17:27:03 +08:00
    @elyamen 太反非人类就不用了,我觉得百度的验证码系统就挺不错的...
    liuhaotian
        30
    liuhaotian  
       2015-07-07 17:28:36 +08:00 via iPhone
    session是没有用的,session依赖cookie在本地存储session ID,那么我只需要随意修改session ID甚至禁用cookie就可以肆意注册
    chairuosen
        31
    chairuosen  
       2015-07-07 17:28:51 +08:00   ❤️ 1
    弄个公众号机器回复下发邀请码。一个openID只给一个
    lightening
        32
    lightening  
       2015-07-07 17:31:10 +08:00
    你确定你的系统没办法绕过验证码吗?
    akira
        33
    akira  
       2015-07-07 18:06:00 +08:00
    session 和 cookie都是可以随便伪造的。
    验证码有打码平台。
    短信验证有短信验证平台。
    IP限制有虚拟拨号/VPN/代理。

    任何限制都只是增加成本,只要他的收益大于成本,依然是会有人去做。
    所以,要么你加大他的成本,要么你降低他的收益,从这个角度出发去做吧。
    mrjoel
        34
    mrjoel  
       2015-07-07 18:33:54 +08:00
    手机语音验证码 简直无解。。。。23333333
    fyooo
        35
    fyooo  
       2015-07-07 18:40:52 +08:00
    @chairuosen 弄个公众账号,从公众账号下发语音邀请码,哈哈
    Desert
        36
    Desert  
       2015-07-07 19:01:44 +08:00
    可以问下什么网站吗?这么多用户想注册
    zcbenz
        37
    zcbenz  
       2015-07-07 19:07:13 +08:00
    在服务器端记录IP地址,用redis几十行代码的事。
    picasso250
        38
    picasso250  
       2015-07-07 20:13:35 +08:00
    假设楼主不是钓鱼贴。

    在不能打击到攻击者肉体(如报警)的情况下,有一个很好抗攻击方法——让攻击的成本高于修复的成本。
    具体到楼主提到的这件事,如果楼主可以判断是谁注册的,做个脚本,每个小时删除一次数据库,就行了。
    ko
        39
    ko  
       2015-07-07 20:46:28 +08:00
    用微信加二次验证
    em70
        40
    em70  
       2015-07-07 20:49:58 +08:00 via Android
    暂停注册看看是不是还会写入,从而排除注入问题
    lyragosa
        41
    lyragosa  
       2015-07-07 21:06:25 +08:00
    让恶意注册你网站的收益小于他恶意注册的成本。

    就不会有人恶意注册了。

    我的网站开了几年,几乎没有打开过任何的注册限制(当然这些功能都做了,只是没实装),也没见有人大规模恶意注册。
    Stof
        42
    Stof  
       2015-07-07 21:11:57 +08:00
    @mrjoel

    23333...

    这个主意确实好,但也限制不了,只是门槛增加了。。。

    再加上这个 http://www.geetest.com/experience/popup
    xrui
        43
    xrui  
       2015-07-07 21:17:34 +08:00 via Android
    @Stof 蛇形的那个简直了…划了五次才过去
    bluepig
        44
    bluepig  
       2015-07-08 02:43:13 +08:00
    Google现在用的门牌号这种验证码貌似不错
    再加手机验证
    r00tt
        45
    r00tt  
       2015-07-08 08:41:02 +08:00 via Android
    怎么获取的,x-forward-for这种只要修改头就可以伪造啦
    fraudmetrix
        46
    fraudmetrix  
       2015-07-08 09:57:07 +08:00
    recall704
        47
    recall704  
       2015-07-08 13:36:25 +08:00
    个人比较推荐等级制度来限制用户行为.

    比如不注册的用户不能下载.
    新注册的用户不能发帖子,能下载.
    用户完成某个动作后变成正式用户(比如 email 认证,手机认证)

    或者新注册的用户发的帖子是不公开的,需要审核的.

    说得简单点,就是用户需要对自己的行为付出一定的代价,这种代价越是无形的越好.
    sampeng
        48
    sampeng  
       2015-07-08 16:52:25 +08:00
    只要不是1小时几万注册那种。。。多点又不会少块肉。。。
    gamecreating
        49
    gamecreating  
       2015-07-08 18:32:25 +08:00
    手机号 短信 验证
    holinhot
        50
    holinhot  
       2015-07-08 23:39:48 +08:00 via iPhone
    短信验证妥妥的
    holinhot
        51
    holinhot  
       2015-07-08 23:49:09 +08:00 via iPhone
    现在都有专业打码团队 验证码何用
    holinhot
        52
    holinhot  
       2015-07-08 23:51:11 +08:00 via iPhone
    国外有那个游戏验证码 请把所有蚊子都拍死
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2788 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:34 · PVG 13:34 · LAX 22:34 · JFK 01:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.