Json Web Token (JWT) 到底是如何减少中间人攻击的?
How exactly does Json Web Token (JWT) reduce the man-in-the loop attack?
我正在尝试了解 JWT,并在网上浏览各种资源。我找到了显示如何检查 JWT 是否经过调和的代码 - 这是一个很棒的代码,我明白了。
但是,我不明白 JWT 怎么不会被可以查看浏览器数据(想想图书馆中的 public 计算机)或嗅探线路的中间人使用(我想这可以通过 HTTPS 避免)获取 GWT 字符串,并从另一台计算机重播。
https://float-middle.com/json-web-tokens-jwt-vs-sessions/
[headerB64, payloadB64, signatureB64] = jwt.split('.');
if (atob(signatureB64) === signatureCreatingFunction(headerB64 + '.' + payloadB64) {
// good
} else
// no good
}
事实上,他们可以。您可以采取措施防止这种情况发生,例如,将请求者的 IP 地址封装在加密数据中,并给令牌一个相对较短的生存时间。但是,关键思想是接收系统 只有 令牌及其加密内容可据以采取行动。服务器可以验证令牌是否有效并且知道它没有被更改,但是,由于没有 "sessions," 它将无法检测到重放攻击,除非 content 的令牌使它能够这样做。 (所以,照做!)
我正在尝试了解 JWT,并在网上浏览各种资源。我找到了显示如何检查 JWT 是否经过调和的代码 - 这是一个很棒的代码,我明白了。
但是,我不明白 JWT 怎么不会被可以查看浏览器数据(想想图书馆中的 public 计算机)或嗅探线路的中间人使用(我想这可以通过 HTTPS 避免)获取 GWT 字符串,并从另一台计算机重播。
https://float-middle.com/json-web-tokens-jwt-vs-sessions/
[headerB64, payloadB64, signatureB64] = jwt.split('.');
if (atob(signatureB64) === signatureCreatingFunction(headerB64 + '.' + payloadB64) {
// good
} else
// no good
}
事实上,他们可以。您可以采取措施防止这种情况发生,例如,将请求者的 IP 地址封装在加密数据中,并给令牌一个相对较短的生存时间。但是,关键思想是接收系统 只有 令牌及其加密内容可据以采取行动。服务器可以验证令牌是否有效并且知道它没有被更改,但是,由于没有 "sessions," 它将无法检测到重放攻击,除非 content 的令牌使它能够这样做。 (所以,照做!)