我想为我的iOS应用提供一个非常简单的文本文件作为JSON,以便在发布时获取数据。
文件结构非常简单,包含一个JSON对象,如下所示:
{
"id": "957ehco3",
"name": "Display Name",
"link": "www.link.com",
"width": 500,
"height": 200
}
它会定期更新,但可以手动更新 - 不需要通过JSON请求进行更新。
如果可能,我想从S3提供服务,并对源进行某种身份验证。我想避免使用专用服务器/框架来提供这个文件。
最简单的方法是什么?
答案 0 :(得分:0)
最轻量级的解决方案?
Cache-Control
标题(max-age=0
)使用HTTPS,请求和响应都是加密的,但是主机也经过身份验证,因为Web服务器提供的SSL证书包含它有权代表的主机名,请求将失败。因此,如果我设置我的Web服务器并将其命名为example-bucket.s3.amazonaws.com
并设法在某处劫持DNS服务器,说服它返回我的IP地址而不是真正的S3 IP地址,则HTTPS客户端将拒绝与之协商HTTPS我的欺诈性冒名顶替网络服务器,因为我的服务器不具备由客户端(浏览器,应用程序)信任的证书颁发机构签名的SSL证书,授权我的Web服务器将自己表示为example-bucket.s3.amazonaws.com
或者,仍然是相对轻量级但更陡峭的学习曲线......如上所述:添加:取决于对您来说多么重要,即使最坚决的滥用者也难以欺骗数据,请使用有效负载签名公钥/私钥对,在S3元数据中包含签名,在应用程序中嵌入 public 键,并验证收到的数据是否与签名匹配。这可以在创建文件时使用openssl工具完成,并在应用程序内部使用java加密函数。
我在此设想的机制类似于Amazon SNS用于向应用程序证明假定来自SNS的HTTP推送消息是真正的SNS,并且EC2用于证明实例身份文档已发布的机制通过AWS。
但告诫lector 当然是因为你不应该接受你在互联网上阅读的安全建议。 :)