Denial of Service attack on Parse.com app
在学习使用Parse.com的功能时,我正在编写一个小型Web应用程序。
由于application_id和javascript_key都是公开的(如文档中所述),这意味着任何人都可以自由运行以下代码段所示的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function sendRequest(){ var query = new Parse.Query(Parse.User); query.find({ success: function(results) { console.log("Request sucessful"); }, error: function(error) { console.log("Request error:" + error.code +"" + error.message); } }); } setInterval(sendRequest, (1000 / hitsPerSecond)); |
我认为它很容易导致" DOS"攻击-任何愿意关闭此应用程序的人都只需恢复公共密钥并发送大量请求。
edit帐户有请求限制,免费计划从30开始,但是使用此简单脚本可以使任何订阅计划达到饱和。
认为这是正确的-是否有针对此的良好做法?有任何适用的模式吗?
预先感谢,
是的,您的Parse JavaScript键是公开的
必须在您的JavaScript文件中定义它们,这些文件可以公开访问。
并不是说您不能尝试通过应用
的原理来隐藏密钥
默默无闻的安全性;-)
您可以在JavaScript内加密密钥并放置解密功能。通过将该功能隐藏在一个没人喜欢的大型讨厌脚本的中间,然后缩小JavaScript(无论如何,您应该这样做),可以进一步使查找变得更加困难。
我确信有可能获得"更多的创造力"并达到一些合理的完美:-)
但是,从原理上讲,对于一个动机十足的黑客来说,仍然有可能对您的程序进行逆向工程并获取密钥。仍然可以使它变得足够困难,因此黑客可能会寻找更容易的目标,据我们所知,目标很多;-)
通过设置正确的权限来减少潜在的危害
无论您是否应用了先前的原则,您的黄金法则都应该是尽可能多地加强您的Parse(或其他任何与此相关的服务器)权限。
这将防止损坏诸如数据之类的不良事件,这比DoS攻击要严重。
这仍将允许任何人知道您的密钥(不仅是通过DoS来滥用它们),而且还可以进行更不愉快的事情,例如以用户身份签名他人并向毫无戒心的受害者释放确认电子邮件流。而且,由于您可能希望允许新用户签名,因此您无法真正保护自己免受这种滥用(上一段的"方法"除外)。
解析自己的陈述
几年前,我实际上在Parse论坛上提出了这个问题,他们的回答是,如果发生这种情况,他们会对此进行调查。
最终想法
最后,假设您的站点业务至关重要,并且在发生实际情况时您不能等待Parse的响应(并不是说它们会很慢-我真的没有这种情况的经验)。
您可以做的是注册其他几个应用程序密钥以进行备用,并保留网站的副本,以便您可以快速将用户转移到该站点。或仅转移其中一些。