我们正在设计一个 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 上不可用的客户端。