Parse.com app上的拒绝服务攻击

Jem*_*Jem 11 denial-of-service parse-platform

我正在编写一个小型Web应用程序,因为我正在学习使用Parse.com的功能.

由于application_idjavascript_key都是公共的(如文档中所述),这意味着任何人都可以自由运行代码,如下面的代码段所示:

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));
Run Code Online (Sandbox Code Playgroud)

我认为它可以很容易地导致"DOS"攻击 - 任何愿意将这个应用程序关闭的人只需要恢复公钥并发送大量请求.

编辑帐户有一个请求/限制,免费计划从30开始,但使用这个简单的脚本可以使任何订阅计划饱和.

考虑到这是正确的 - 对此有什么好的做法吗?任何模式适用?

提前致谢,

Dmi*_*sev 1

是的,您的 Parse JavaScript 密钥是公开的

它们必须在 JavaScript 文件中定义,并且可以公开访问。

并不是说您不能尝试通过应用以下原则来隐藏您的密钥

默默无闻的安全性;-)

您可以加密您的密钥并将解密函数放在 JavaScript 中。您可以通过将该函数隐藏在没人会喜欢的大型令人讨厌的脚本中间,然后缩小您的 JavaScript(无论如何您都应该这样做)来进一步使其更难找到。我确信有可能变得“更有创意”并达到一些合理的完美:-)

然而,原则上,有足够动机的黑客仍然有可能对你的程序进行逆向工程并获取密钥。不过,你仍然可以使其变得足够困难,因此黑客可能会寻找更容易的目标,据我们所知,其中有很多;-)

通过设置正确的权限减少潜在的危害

无论您是否应用前面的原则,您的黄金法则应该是尽可能收紧您的 Parse(或任何其他与此相关的服务器)权限。

这将防止发生比 DoS 攻击更糟糕的数据被破坏等不良事件。

这仍然会允许任何人知道你的密钥并滥用它们 - 不仅通过 DoS - 而且还可以进行更令人不快的事情,例如将其他人的密钥签名为用户并向毫无戒心的受害者发送一连串确认电子邮件。而且由于您可能希望允许新用户签名,因此您无法真正保护自己免受这种滥用(除了上一段的“方法”)。

解析自己的声明

几年前,我实际上在 Parse 论坛上问过这个问题,他们的回答是,如果发生这种情况,他们会对此进行调查。

最终想法

最后,假设您的网站业务至关重要,并且万一实际发生这种情况,您无法等待 Parse(这并不是说它们会很慢 - 我真的没有这种情况的经验)。

然后,您可以做的是注册其他几个应用程序密钥以供后备,并保留您网站的副本,以便您可以快速将用户转移到那里。或者只转移其中的一些。