Parse platform 解析服务器会话令牌安全问题

Parse platform 解析服务器会话令牌安全问题,parse-platform,parse-server,Parse Platform,Parse Server,我正在创建一个完全基于parse server的vue单页应用程序,并在客户端使用其javascript sdk进行数据操作。对于登录/注册,我使用Parse.User.logIn/signUp并使用javascript密钥进行身份验证 现在,在登录到浏览器后,将使用installationId和sessionToken向解析服务器发送RESTAPI请求。这是可以的,但是如果任何用户决定创建一个bot来用垃圾数据填充解析服务器呢?我检查了通过向解析服务器发送RESTAPI请求,使用/复制这些安全

我正在创建一个完全基于parse server的vue单页应用程序,并在客户端使用其javascript sdk进行数据操作。对于登录/注册,我使用Parse.User.logIn/signUp并使用javascript密钥进行身份验证


现在,在登录到浏览器后,将使用installationId和sessionToken向解析服务器发送RESTAPI请求。这是可以的,但是如果任何用户决定创建一个bot来用垃圾数据填充解析服务器呢?我检查了通过向解析服务器发送RESTAPI请求,使用/复制这些安全令牌/密钥可以轻松创建对象。我可以阻止创建类,但如何防止重用来自其他介质的会话令牌?

使用CLP禁用表上的创建权限

有了更多信息,这将更好地解决您的需求:

Parse.Cloud.beforeSave('Article', (req, res) => {
    let article = req.object;
    if( object.isNew() ) {
        let query = new Parse.Query('Article');
        let 5MinsAgo = //Calculate date
        query.greaterThan('createdAt', 5MinsAgo).equalTo('Author', article.get('Author');
        return query.count().then(
            count => { 
                if( count > max_allowed_count ) res.error('You've created too many articles.');
                else res.success();
            }
        );
    }
    else res.success(); //Or any other validation
});

您还可以删除用户的创建权限,让他们将数据发送到云,并在云上进行验证。这通常是一个很好的总体安全策略,因为它在客户机上留下的漏洞要少得多。您还可以禁用查找权限,并从云函数执行所有查询。这些东西混淆了后端的逻辑,这很好。

如果攻击者可以访问JavaScript密钥,他可以执行vue应用程序可以执行的任何操作。他甚至不需要会话令牌

您所描述的是Dos攻击。Dos攻击只有在攻击者能够在服务器上生成高负载而不会在自己身上生成高负载时才有效。在您的情况下,他可能能够生成许多对象,但他无法使您的服务器过载(除非他比您有更多的处理能力)

此外,如果您只想保持数据库干净,您可能希望限制创建用户,因此仅使用JavaScript键是不可能的。这样,您只允许您信任的用户访问。问题是它不能伸缩


这种困境对于解析服务器来说并不特殊。大多数web应用程序通过不信任客户端并将其操作限制到特定表来解决这个问题,就像Parse Server中的CLP(类级权限)一样

所有答案都是有效的。有很多方法可以缓解这些问题

您还可以使用需要身份验证类级别权限()的

您可以在负载平衡器和解析服务器之间,通过IP、会话令牌等对客户端发出的请求进行一些跟踪。。。为了阻止请求,如果您认为它们是欺诈的,可以通过诸如nginx之类的速率限制代理

还有许多其他的可能性,其中大多数适用于任何类型的web应用程序

您应始终记住:

  • 确保您的万能钥匙安全(必要时旋转)
  • 始终使用HTTPS(不在HTTP上提供服务)

用户如何知道他的installationId/sessionToken是什么?@LulzCow web应用程序的用户可以通过检查网络操作(使用chrome developer工具或任何其他工具)轻松查看会话令牌。我希望用户在表中创建对象。假设用户是文章作者。现在,他可以使用web应用程序在表中添加一个article对象。我试图防止的是任何对解析api的滥用。假设用户使用浏览器的开发人员控制台收集会话令牌和所有密钥,并决定从脚本发布垃圾文章,并自动填充表。我想防止这种情况。你可以对新文章使用beforeSave触发器