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

2015-07-04 17:36:32 +08:00
 q84629462

我刚刚测试了一下:

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

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

3773 次点击
所在节点    LeanCloud
5 条回复
q84629462
2015-07-05 15:00:26 +08:00
现在先放闭包里使用了,还有更好的方案么?
(function(){
var AV = window.AV;
delete window.AV;
//leancloud的功能都放闭包内使用了
})()
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
2015-07-06 12:03:56 +08:00
再补一刀,目前 LeanCloud 是有同一 IP 请求频度限制的,频率过高,服务器会限制。
注意:是同一 IP。
q84629462
2015-07-06 17:33:28 +08:00
@wangxiao2015
安全域名我注册完逛设置就已经设置了,所以我不怕被外人使用REST API调用API,而且REST API是需要Master key的吧
ACL也有在用
BeforeSave抛弃掉save的请求,不算入API调用次数么?
hjiang
2015-07-06 17:52:09 +08:00
这其实不是使用 LeanCloud 特有的问题。假设你在 阿里云租了服务器和带宽,恶意攻击你的人一样可以通过发大量请求把你的计算资源和带宽占满。进行这样的攻击通常对攻击者成本也不低,所以如果没有特别的原因没人会那么做。

LeanCloud 对每个应用的每秒请求数有一个软限制,如果超出的话会联系开发者确认是否是正常流量。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203312

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX