保护网页应用
互联网上的通信很容易被窃听和恶意篡改。亚马逊应用商店建议您采取措施保护提交的网页应用。为保护网页应用的安全,最好的方法是使用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证书:
- 对于Apache Tomcat: SSL配置操作方法
- 对于Microsoft IIS: 如何在IIS中实现SSL
- 对于NGINX: 模块ngx_http_ssl_module