解析安全实施(货币)

时间:2015-01-07 17:23:53

标签: android security parse-platform

我正在构建一个使用虚拟货币的应用。我看到一个问题,如果假设,因为api密钥是纯文本,如果有人决定使用我的密钥创建一个应用程序,他们可以使用这样的简单查询。

ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username","Username");
query.findInBackground(new FindCallBack<ParseUser>(){
    @Override
    public void done(List < ParseUser > parseList, ParseException e) {
        for(ParseUser user: parseList){
            user.set("coins",10000);
            user.saveInBackground();
        }
    }
});

此查询允许用户在不登录的情况下更改其货币。如何使用Parse提高虚拟货币应用程序的安全性? “coins”是用户行中的一列,显示他们拥有的货币数量。我有一个基于关系的朋友列表。

1 个答案:

答案 0 :(得分:0)

我建议您阅读SecurityImplementing Business Logic in Cloud Code

  

客户端和服务器之间的连接

     

当应用程序首次连接到Parse时,它会使用   应用程序ID和客户端密钥(或REST密钥,或.NET密钥,或   JavaScript密钥,取决于您使用的平台)。这些是   没有秘密,他们自己也没有安全的应用程序。这些钥匙是   作为您的应用程序的一部分发布,任何人都可以反编译您的应用程序或   从他们的设备代理网络流量以查找您的客户端密钥。这个   使用JavaScript可以更轻松地利用漏洞 - 人们可以简单地查看源代码&#34;   在浏览器中立即找到您的客户端密钥。

     

这就是为什么Parse有许多其他安全功能可以帮助您保护安全   你的数据。客户端密钥将发送给您的用户,所以任何事情   可以通过公众可以使用客户端密钥来完成,   甚至是恶意黑客。

     

另一方面,主密钥肯定是一种安全机制。   使用主密钥可以绕过所有应用程序的安全性   机制,例如类级权限和ACL。有了   主密钥就像对您的应用程序的服务器具有root访问权限一样   应该以同样的热情保护你的万能钥匙   保护你的生产机器&#39; root密码。

     

整体理念是限制客户的力量(使用   客户端密钥),并执行任何需要的敏感操作   Cloud Code中的主密钥。你将学会如何最好地掌握这种力量   标题为在云代码中实现业务逻辑的部分。

接下来是主要想法:coins data would be only readable from client side