amazon-web-services - AWS Amplify - 配置的安全性

标签 amazon-web-services amazon-cognito

在下面来自 amplify 的示例中,我们必须提供一些配置以允许 Javascript 客户端连接到 Cognito。我的假设是可以在客户端上以明文形式保存这些数据。

但是,在某些文章中,建议情况并非如此,我在官方 AWS 站点和放大站点上都没有找到关于这方面被认为是最佳实践的任何内容。

如果仅进行 JS(即不涉及后端)身份验证,在客户端处理此配置的最佳方法是什么?

import Amplify from 'aws-amplify';

Amplify.configure({
    Auth: {
        // REQUIRED - Amazon Cognito Identity Pool ID
        identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab', 
        // REQUIRED - Amazon Cognito Region
        region: 'XX-XXXX-X', 
        // OPTIONAL - Amazon Cognito User Pool ID
        userPoolId: 'XX-XXXX-X_abcd1234',
        // OPTIONAL - Amazon Cognito Web Client ID
        userPoolWebClientId: 'XX-XXXX-X_abcd1234', 
    }
});

最佳答案

在您的客户端配置中使用它完全没问题。事实上它是必不可少的。

ID 中没有 secret 信息,它们只是引用。暴露你的 API 端点没有什么不同,它必须完成。

您的客户端必须连接到您的 Cognito 实例。您可能会想出一些复杂的方法,通过在运行时将属性从在线商店中拉出来隐藏这些属性,但您的客户端最终仍会公开这些属性。此外,您的用户此时不会通过身份验证,因此您甚至无法保护在线商店。

此外,您的属性并不是真正可变的。它只需要一个暴露属性的实例(例如,开发人员发布它们,或者只是告诉某人)并且它们将不可逆转地丢失。试图隐藏它们是一场失败的游戏。

我建议创建一个后端服务只是为了掩盖客户端与 Cognito 的交互是一种反模式。

AWS 提供了许多开箱即用的安全功能,包括因密码使用不当而锁定帐户,以及阻止来自在短时间内进行过多调用的 IP 的调用。我相信 AWS 服务也支持 DDOS 保护(请参阅 CloudFront)。如果有人拿走你的属性(property)并试图通过账户暴力破解或 DDOS 攻击你,他们将很难实现任何目标。

关于amazon-web-services - AWS Amplify - 配置的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56178635/

相关文章:

amazon-web-services - 在CloudFormation中创建安全组时如何指定我的IP?

ios - 如何在 Swift 中从 AWS Mobile Hub 检索电子邮件和电话号码?

web - 如何使用使用内置登录页面的 cognito 的 cloudfront 托管静态 s3 网站

amazon-web-services - Amazon Cognito 删除账户

amazon-web-services - 从 AWS ECS Fargate 访问 AWS RDS 的最佳方式

node.js - 只要存在数据库调用,AWS Lambda 函数就会导致超时

git - 将 Flask 应用程序部署到 AWS beanstalk 时出现错误 [Errno 2]

macos - 我无法使用 pip 在 mac 操作系统上安装 aws cli - awscli : command not found

ios - 如何将 AWS DynamoDB 与数据集 ios swift 同步?

amazon-web-services - 跨账户使用 AWS cognito 用户池进行登录