我正在构建一个使用虚拟货币的应用。我看到一个问题,如果假设,因为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”是用户行中的一列,显示他们拥有的货币数量。我有一个基于关系的朋友列表。
答案 0 :(得分:0)
我建议您阅读Security和Implementing 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
。