我刚刚测试了一下:
for(var i = 0;i<500;i++) AV.User.current().save();
这样就耗费了500次API调用次数,如果被while(true) + 多浏览器挂机,估计可以一天就破产了。
有什么解决办法么?
1
q84629462 OP 现在先放闭包里使用了,还有更好的方案么?
(function(){ var AV = window.AV; delete window.AV; //leancloud的功能都放闭包内使用了 })() |
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 操作进行判断,是否可以通过,是否可以调用等。这种情况下,你可以将这些请求抛弃掉。 有问题再联系。 |
3
wangxiao2015 2015-07-06 12:03:56 +08:00
再补一刀,目前 LeanCloud 是有同一 IP 请求频度限制的,频率过高,服务器会限制。
注意:是同一 IP。 |
4
q84629462 OP @wangxiao2015
安全域名我注册完逛设置就已经设置了,所以我不怕被外人使用REST API调用API,而且REST API是需要Master key的吧 ACL也有在用 BeforeSave抛弃掉save的请求,不算入API调用次数么? |
5
hjiang 2015-07-06 17:52:09 +08:00
这其实不是使用 LeanCloud 特有的问题。假设你在 阿里云租了服务器和带宽,恶意攻击你的人一样可以通过发大量请求把你的计算资源和带宽占满。进行这样的攻击通常对攻击者成本也不低,所以如果没有特别的原因没人会那么做。
LeanCloud 对每个应用的每秒请求数有一个软限制,如果超出的话会联系开发者确认是否是正常流量。 |