我正在使用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>
我真的不喜欢poolID可见.攻击者可以复制此攻击并强制使用我的认知ID.有什么想法可以隐藏吗?
最佳答案 使用标识池ID来创建客户端是一项要求,并且保持客户端是非常常见的.它本身并不是一个主要的风险,而且你可以通过一些修补来极大地限制它们.
您可以通过Cognito创建的角色和链接到池来降低暴露身份池ID的风险.通过这些,您可以缩小Cognito将为未经身份验证/验证的用户生成的凭据. This blog post有更多关于如何做到这一点.您可以更进一步,通过大大限制未经身份验证的用户的权限,直到他们登录到经过身份验证的身份.