保护您的 Web 应用


保护您的 Web 应用

互联网上的通信很容易被窃听和恶意篡改。亚马逊移动应用分发计划建议您采取措施保护使用您提交的 Web 应用的客户。为保护 Web 应用的安全,最好使用 HTTPS。

注意:​ 此页面上引用的开发材料和工具由第三方而非亚马逊提供。这些工具的链接会将您带到第三方网站。

什么是 HTTPS?

HTTPS 是通过互联网进行安全通信的协议。它可以通过加密客户端和服务器之间的所有流量来保护敏感、机密或个人信息(如电话号码或地址)的机密性。它还允许客户端验证它是否正在与预期服务器通信。

为什么使用 HTTPS?

未配置 HTTPS 的 Web 应用容易受到以下类型的攻击:

中间人攻击:

此技术涉及攻击者将自己置于最终消费者和您的 Web 应用之间,代表您的 Web 应用提供内容。针对此类攻击的一种常用防御方法是,对客户端进行身份验证,同时通过 HTTPS 在客户端和服务器之间使用强加密。

嗅探和窃听:

此技术涉及攻击者拦截或记录网络流量以捕获个人用户信息,例如密码、用户 ID 等。通过使用安全 HTTPS 连接,这些技术不会泄露个人信息,因为这些信息是在安全连接中加密的。

Amazon Web 应用安全性

 除了建议对所有应用使用 SSL 之外,亚马逊还要求通过 SSL 托管使用应用内购买或需要身份验证的网页。

权限安全要求

为了防止欺诈性的应用内交易,我们要求使用亚马逊应用内购买 API 的页面是完全安全的。为确保您的应用安全,请确保触发 IAP 交易的页面及其所有相关资源都使用 SSL/HTTPS 进行处理。这将防止任何中间人攻击,此技术可用于在应用与亚马逊应用内购买 API 交互期间攻击您的应用。

链接资源

如果您使用的是任何客户权限,因此需要通过 SSL 托管您的应用页面,我们建议您的所有链接资源也通过 SSL 托管。

在提交使用应用内购买的应用之前,请确保触发 IAP 交易的页面所使用的任何第三方组件也得到安全处理。

检查常见组件(如广告网络),这些组件有时可能会创建一个未安全处理的 iframe,从而导致亚马逊应用内购买 API 因引发异常而失败。此外,社交媒体控件也可能会无意中处理不安全的内容,这反过来会限制对亚马逊应用内购买 API 的访问。

应用内购买 SSL 故障的异常处理

如果 IAP 调用由不符合上述安全要求的页面触发,亚马逊框架将引发全局异常。您可以通过向 window.onerror 方法提供处理程序来捕获此异常。

window.onerror = function(errorMessage, fileName, lineNumber)
{
 alert('Error: ' + errorMessage);
}

或者,错误还出现在“adb logcat”中:

E WebConsole-ERROR: Uncaught WebAppBridgeError: Invalid use of IAP, calling page must be fully secure.

请将失败通知给最终客户,确保您在应用中适当处理此异常。由于这实际上是一个致命错误,因此请务必先测试您的 IAP 交易,然后再将其提交到我们的应用商店。

如何实现 HTTPS

HTTPS 的典型实现提供机密性和服务器身份验证。这意味着:

  • 客户端可以确保它正在与预期服务器通信。
  • 客户端和服务器之间的通信是加密的,因此其他人无法拦截它。
  • 客户端和服务器都保证邮件在传输过程中没有被更改。

部署和配置简单的 Web 应用以在 Amazon S3 上使用 HTTPS:

使用现有通配符证书在 Amazon S3 上设置 HTTPS 十分简单,只需以下几个步骤:

  • 登录 S3 控制台。
  • 为您的应用创建日志记录存储桶。请注意,它必须与应用托管存储桶位于同一区域。此存储桶可以在多个应用之间共享。
  • 创建存储桶以托管您的应用代码,并选择一个区域。请注意,存储桶名称应符合以下要求的 DNS: AWS 存储桶限制
  • 在创建应用托管存储桶时启用存储桶日志记录,为您的应用指定目标存储桶和(可选)前缀。
  • 将您的 Web 应用文件上传到应用托管存储桶。
  • 选择存储桶“属性”选项卡,在“静态网站托管”下单击“启用网站托管”,指定索引文档,然后单击“保存”。
  • 转到存储桶的“权限”选项卡,并添加一个存储桶策略,以确保应用是全球可读的,并且只能通过 SSL 连接进行处理。
  • 策略示例:

    {
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::/*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": true
                }
            }
        }
    ]
    }
    
  • 单击索引文档对象,然后从该对象的“属性”选项卡复制 URL。
  • 这是应该用于处理您的 Web 应用的 URL。

使用主要托管服务商设置 HTTPS:

一般 HTTPS 设置说明

如果不使用上述列表中的提供商,请使用以下步骤作为对 Web 应用设置 HTTPS 的常规指南。

  • 使用 DNS 提供商创建自定义域。
  • 创建证书签名请求 (CSR),以供证书颁发机构用于生成 SSL 证书。**
  • 使用证书颁发机构获取已签名的 SSL 证书或创建您自己的证书。**
  • 在 Web 服务器上安装新 SSL 证书: