Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在我的html中显示AWS cognito池ID安全吗?_Amazon Web Services_Amazon S3_Aws Lambda_Aws Sdk_Amazon Cognito - Fatal编程技术网

Amazon web services 在我的html中显示AWS cognito池ID安全吗?

Amazon web services 在我的html中显示AWS cognito池ID安全吗?,amazon-web-services,amazon-s3,aws-lambda,aws-sdk,amazon-cognito,Amazon Web Services,Amazon S3,Aws Lambda,Aws Sdk,Amazon Cognito,我正在用AWS Cognito、Lambda、S3和更多的服务构建一个无服务器网站。我登录页面中的HTML/JS具有cognito池ID。这有多安全?我知道最好的做法是隐藏敏感的东西。但这不是客户机服务器。如果我诚实的话,那就全是客户了。我确实通过lambda电话访问了一些敏感数据。但即使是这个调用也需要一些纯文本敏感输入,比如用户ID <script src="https://sdk.amazonaws.com/js/aws-sdk-2.3.7.min.js"> <

我正在用AWS Cognito、Lambda、S3和更多的服务构建一个无服务器网站。我登录页面中的HTML/JS具有cognito池ID。这有多安全?我知道最好的做法是隐藏敏感的东西。但这不是客户机服务器。如果我诚实的话,那就全是客户了。我确实通过lambda电话访问了一些敏感数据。但即使是这个调用也需要一些纯文本敏感输入,比如用户ID

    <script src="https://sdk.amazonaws.com/js/aws-sdk-2.3.7.min.js">   </script>
    <script>
    AWS.config.region = 'XX-XXXX-1';
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'XX-XXXX-1:XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX'
    });
    var lambda = new AWS.Lambda();
    </script>

AWS.config.region='XX-XXXX-1';
AWS.config.credentials=新的AWS.CognitoIdentityCredentials({
IdentityPoolId:'XX-XXXX-1:XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX'
});
var lambda=新的AWS.lambda();

我真的不喜欢这个游泳池。攻击者可以复制此文件并强制使用我的cognito ID。有没有隐藏它的想法?

使用标识池id创建客户端是一项要求,将其保留在客户端是非常常见的。这本身并不是一个大的风险,而且只要你稍加修改,风险就会大大降低


您可以通过Cognito创建的角色和池的链接来降低暴露身份池id的风险。通过这些,您可以确定Cognoto将为未经身份验证/身份验证的用户生成的凭据的范围。有更多关于如何做到这一点。您可以进一步限制未经身份验证的用户的权限,直到他们登录到经过身份验证的身份。

我也有同样的担心,并计划使用php或node.js在服务器端保留cognito池id和客户端id(例如EC2)。然而,我很沮丧地发现亚马逊改变了主意,没有包括Cognito用户池客户端SDK支持。

希望这将包括在未来的版本中

我怀疑php也是如此

一种替代方法是使用一个javaScript模糊器,如下所示:
在列表中隐藏键或ID,只需查看页面源。

您可以将池和其他Cognito ID放入HTML中,而不用担心(如果您仔细定义了未经授权的策略),但您可能希望使用API网关(带有内置Cognito授权器)来处理对其他后端服务(如DynamoDB或S3)的调用而不是直接从前端js使用这些。这里描述的是:


Cognito用户池在核心Android、iOS和JavaScript SDK之外的SDK上绝对受支持,您链接的帖子的意思是,这些SDK有额外的助手,可以让生活更轻松,而其他SDK则没有。您完全可以使用大多数SDK中包含的直接API来连接和使用用户池,而无需使用移动SDK方便的方法。不过,这张海报并不是问Cognito用户池,而是问Cognito联合身份。