开发人员控制台

保护网页应用


保护网页应用

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

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

什么是HTTPS?

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

为何使用HTTPS?

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

中间人攻击:

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

嗅探和窃听:

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

Amazon网页应用安全性

 除了建议对所有应用使用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的典型实现可同时提供机密性和服务器身份验证。这意味着:

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

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

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

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

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

对主要托管服务提供方设置HTTPS:

一般HTTPS设置说明

如果没有使用上述列表中的提供方,请使用以下步骤作为对网页应用设置HTTPS的常规指南。

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