【发布时间】:2016-07-02 04:55:20
【问题描述】:
我们正在设计一款 iOS 游戏,其中一些用户可能会修改从无服务器创建的后端返回的响应以作弊(通过 MITM 假证书)。为了在一定程度上帮助抵消这种情况,我们希望包含一个很难弄清楚的签名。这个实现已经全部完成(并且在无服务器离线上工作,但是由于 API 网关的限制,我们很难从 Lambda 中返回原始 JSON。我们需要能够拥有 JSON 的快照以确保当我们进行校验和时,字符串化版本的顺序相同。否则,它可能在 iOS 端计算不同,因为它在被膨胀为对象之前已经是一个字符串。
是否有任何可能的方法来返回一个字符串而不让 API Gateway 转义它?
例如:
callback(null, flattened_json_string);
在 Serverless-Offline 上产生正确的响应,因为它允许您返回字符串。当实际托管在 API-Gateway 中时,我们会得到一些转义的内容,例如:
"{\"metadata\":{\"cmKey\":\"537d1a54916e56bac1d03478b18575e8c0c74d86\",\"cacheReady\":true,\"serverTime\":1467433541108},\"commands\":[]}"
我确实知道传递这样一个块的方法,但我不希望它被解析和重新字符串化,并冒着由于校验和而改变顺序的风险。
我也知道有很好的 javascript 框架来获取对象的哈希,但这显然在 iOS 上不可用的客户端。
【问题讨论】:
标签: json amazon-web-services lambda aws-api-gateway serverless-framework