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

如何避免使用 JS sdk 的页面被恶意使用网页开发者工具写个死循环调用 leancloud API?

  •  
  •   q84629462 · 2015-07-04 17:36:32 +08:00 · 3737 次点击
    这是一个创建于 3190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我刚刚测试了一下:

    for(var i = 0;i<500;i++) AV.User.current().save();
    

    这样就耗费了500次API调用次数,如果被while(true) + 多浏览器挂机,估计可以一天就破产了。
    有什么解决办法么?

    5 条回复    2015-07-06 17:52:09 +08:00
    q84629462
        1
    q84629462  
    OP
       2015-07-05 15:00:26 +08:00
    现在先放闭包里使用了,还有更好的方案么?
    (function(){
    var AV = window.AV;
    delete window.AV;
    //leancloud的功能都放闭包内使用了
    })()
    wangxiao2015
        2
    wangxiao2015  
       2015-07-06 11:50:21 +08:00
    你好,感谢使用 LeanCloud。

    在匿名函数的内部定义业务逻辑,对这种情况是无用的。
    因为对方可以直接发送 REST API,甚至都不需要在你的 Web 程序中。

    可以参考 LeanCloud 官方的「数据与安全」文档。地址 https://leancloud.cn/docs/data_security.html

    在这儿简单描述下:

    LeanCloud 提供多种安全策略来保证你应用的安全。

    对于一个 Web 应用,首先你应该在「安全中心」中配置「Web 安全域名」,防止其他人恶意部署你的 Web App,也能防御通过其他渠道使用你的服务器资源。

    另外,所有的请求,应该明确权限,也就是设置 ACL 来限制,比如是否这个用户有权限修改头像,保存某个 Class 的数据之类的。

    第三种,就是类似你这种请求限制,或者更多更严格的限制,可以通过 LeanEngine(云代码)。LeanEngine 提供简单模式,可以写一些服务器端的 Hook,比如 BeforeSave 这个 Hook,就可以对所有 save 操作进行判断,是否可以通过,是否可以调用等。这种情况下,你可以将这些请求抛弃掉。

    有问题再联系。
    wangxiao2015
        3
    wangxiao2015  
       2015-07-06 12:03:56 +08:00
    再补一刀,目前 LeanCloud 是有同一 IP 请求频度限制的,频率过高,服务器会限制。
    注意:是同一 IP。
    q84629462
        4
    q84629462  
    OP
       2015-07-06 17:33:28 +08:00
    @wangxiao2015
    安全域名我注册完逛设置就已经设置了,所以我不怕被外人使用REST API调用API,而且REST API是需要Master key的吧
    ACL也有在用
    BeforeSave抛弃掉save的请求,不算入API调用次数么?
    hjiang
        5
    hjiang  
       2015-07-06 17:52:09 +08:00
    这其实不是使用 LeanCloud 特有的问题。假设你在 阿里云租了服务器和带宽,恶意攻击你的人一样可以通过发大量请求把你的计算资源和带宽占满。进行这样的攻击通常对攻击者成本也不低,所以如果没有特别的原因没人会那么做。

    LeanCloud 对每个应用的每秒请求数有一个软限制,如果超出的话会联系开发者确认是否是正常流量。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5369 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:53 · PVG 14:53 · LAX 23:53 · JFK 02:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.