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

如何绕过前端限制

  •  
  •   zhangfanfan · 2016-11-21 14:13:14 +08:00 · 5250 次点击
    这是一个创建于 2713 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一个问题,有些网站是前段限制某些输入的,而且这种限制是未作后端验证的。 https://e.189.cn/register/email/step1.do? 例如上面这个网址,用 live.com 的邮箱无法注册。 我尝试了用 fiddler 来构造请求、 Chrome 修改 JS 内容,不得要领,在这里请教一下大家。 如果能非常具体的讲解一下步骤那就是最好的了。非常感谢。

    我用 fiddler 构造请求的时候,它这个好像是加密了的,所以我没法找到对应的字段。 我用 Chrome 修改 JS 不知道怎么修改,直接修改好像修改不了。

    页面源码有这么一段: //特殊邮箱处理 var rNotSupportEmail=/.(@msn.)|(@live.)|(@vista.)|(@hotmail.)|(@outlook.)|(@yahoo.)|(@gmail.)|(@corp.21cn.)/; if(rNotSupportEmail.test(itemVal)){ return commit(false, "暂不支持此类邮箱注册"); }; if (itemVal.indexOf("@189.cn") != -1) { return commit(false, "189 邮箱帐号可直接登录"); } var rMail21cn=/.@(..)*21cn.((com)|(net))$/; if (rMail21cn.test(itemVal)) { return commit(false, "21cn 邮箱帐号可直接登录"); // return commit(false, "暂不支持 21CN 邮箱注册"); }

    9 条回复    2016-11-21 16:59:43 +08:00
    tinyproxy
        1
    tinyproxy  
       2016-11-21 14:22:33 +08:00   ❤️ 1
    document.getElementById('setRegInfoMail').submit()

    然而人家后端也做了这个校验,我输入一个 [email protected] 能提交成功, [email protected] 就 GG
    zhangfanfan
        2
    zhangfanfan  
    OP
       2016-11-21 14:24:21 +08:00
    额,所以这个是做了后端限制了对吗? 无法用 live.com 邮箱进行注册了
    hardensky
        3
    hardensky  
       2016-11-21 14:56:04 +08:00   ❤️ 1
    后台有校验的 搞个 @live 的提交会重定向到原来页面 这种前端校验只是为了用户体验 后端肯定也会做校验的
    ferrum
        4
    ferrum  
       2016-11-21 15:05:35 +08:00   ❤️ 1
    你可以先输入正确的信息,然后用 Chrome Dev Tools 看看有什么东西都发送过去了,再构建对应的请求。

    有个比较好用的 Chrome 插件叫 Postman ,安装了 Postman Interceptor 后还能直接发送 cookies 。

    但楼上也有人说了,数据检验,一般不能只由前端做的,后端也会有的,除非后端开发不上心。
    ferrum
        5
    ferrum  
       2016-11-21 15:10:52 +08:00   ❤️ 1
    对于 https://e.189.cn/register/email/step1.do?这里的注册,看一下 Chrome Dev Tools 里的 Network 就知道怎么回事了。

    前端先判断邮箱符不符合要求,符合要求后,再向 https://e.189.cn/validation/userNameExist.do?userName=email%40example.com 发送请求,判断符不符合后端的请求。
    zhangfanfan
        6
    zhangfanfan  
    OP
       2016-11-21 15:11:28 +08:00
    @hardensky 那这种情况下,能否构建修改响应,先欺骗浏览器,进入到下一步(页面)当中去?
    liuzhedash
        7
    liuzhedash  
       2016-11-21 15:21:28 +08:00   ❤️ 1
    如果只是为了伪造或修改一个请求,改 js 性价比太低,可以用 burp 拦截并修改请求
    构建响应欺骗浏览器理论上可以,不过下一步的那个页面在请求的时候可能会检验 session 看上一步是否已经通过,如果没检验的话或许可以进入
    jugelizi
        8
    jugelizi  
       2016-11-21 15:27:34 +08:00   ❤️ 1
    人家后端有验证
    别试了

    复制页面 JS
    <script>
    //linech 2014-6-20
    seajs.use
    一直到最后 然后删除中间规则 放到 console 里执行就绕过 js 验证的
    用户名可用也通过
    hardensky
        9
    hardensky  
       2016-11-21 16:59:43 +08:00   ❤️ 1
    @zhangfanfan 进入下一步页面也没有意义啊 你写个符合格式的就可以看到页面长啥样 而你伪造的话;下一步的下一步还是过不去啊,后台校验后又不会存你的数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4869 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:51 · PVG 17:51 · LAX 02:51 · JFK 05:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.