作为 url 的一部分传递 jwt 令牌不好吗?
is it bad to pass jwt token as part of url?
您好,目前我有一个 angular 应用程序和 java 后端。在我的 angular 组件 html 中,我有一些图像,例如个人资料照片。提供图像文件的资源受到 spring 安全保护。
所以我的问题是将 json 网络标记附加为图像的一部分不好 url 吗?它会导致安全漏洞吗?这是一种不好的做法吗?
以下是我的 angular 代码在 chrome 开发人员工具中的样子。
<div _ngcontent-c5="" class="avatar-circle bg-secondary text-brand-secondary" ng-reflect-klass="avatar-circle" ng-reflect-ng-class="bg-secondary,text-brand-second" style="background-image: url("http://localhost:8080/api/files/4eb81fa8-9c5d-4920-b0f5-c9239fb1cae7?access_token=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnbG9iYWxhZG1pbkBsb2NhbGhvc3QiLCJhdXRoIjoiUk9MRV9HTE9CQUxfQURNSU4iLCJleHAiOjE1NjExOTkwNTh9.UFvdgZNxs_O1uTjtUh64ko3A47R2fxZxYFX0aXv2Jp_TkVrmlBT1mzN40JwclGk3m0sCZONKbnVhgXXKy69DfQ");">
<!--bindings={
"ng-reflect-ng-if": "false"
}-->
</div>
感谢任何帮助。我很想将 access_token 作为 http get 请求 header 的一部分传递,但我无法在任何地方找到合适的代码。感谢您的帮助。
根据图像的不同,您可能希望使其 public 可用或考虑使用不同的方式将令牌发送到服务器(cookie 可能会有所帮助)。
Can it cause a security breach? Is it a bad practice?
正如我在 , JWT tokens are URL-safe when it comes to their syntax. Here is a quote from the RFC 7519 中提到的:
A JWT is represented as a sequence of URL-safe parts separated by period (.
) characters. Each part contains a base64url-encoded value. [...]
但是,当使用 JWT 作为 不记名令牌 时,建议避免在 URL 中发送它们。请参阅 RFC 6750 中的以下引用:
Don't pass bearer tokens in page URLs: Bearer tokens SHOULD NOT be passed in page URLs (for example, as query string parameters).
Instead, bearer tokens SHOULD be passed in HTTP message headers or message bodies for which confidentiality measures are taken.
Browsers, web servers, and other software may not adequately secure URLs in the browser history, web server logs, and other data structures. If bearer tokens are passed in page URLs, attackers might be able to steal them from the history data, logs, or other unsecured locations.
您好,目前我有一个 angular 应用程序和 java 后端。在我的 angular 组件 html 中,我有一些图像,例如个人资料照片。提供图像文件的资源受到 spring 安全保护。 所以我的问题是将 json 网络标记附加为图像的一部分不好 url 吗?它会导致安全漏洞吗?这是一种不好的做法吗?
以下是我的 angular 代码在 chrome 开发人员工具中的样子。
<div _ngcontent-c5="" class="avatar-circle bg-secondary text-brand-secondary" ng-reflect-klass="avatar-circle" ng-reflect-ng-class="bg-secondary,text-brand-second" style="background-image: url("http://localhost:8080/api/files/4eb81fa8-9c5d-4920-b0f5-c9239fb1cae7?access_token=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnbG9iYWxhZG1pbkBsb2NhbGhvc3QiLCJhdXRoIjoiUk9MRV9HTE9CQUxfQURNSU4iLCJleHAiOjE1NjExOTkwNTh9.UFvdgZNxs_O1uTjtUh64ko3A47R2fxZxYFX0aXv2Jp_TkVrmlBT1mzN40JwclGk3m0sCZONKbnVhgXXKy69DfQ");">
<!--bindings={
"ng-reflect-ng-if": "false"
}-->
</div>
感谢任何帮助。我很想将 access_token 作为 http get 请求 header 的一部分传递,但我无法在任何地方找到合适的代码。感谢您的帮助。
根据图像的不同,您可能希望使其 public 可用或考虑使用不同的方式将令牌发送到服务器(cookie 可能会有所帮助)。
Can it cause a security breach? Is it a bad practice?
正如我在
A JWT is represented as a sequence of URL-safe parts separated by period (
.
) characters. Each part contains a base64url-encoded value. [...]
但是,当使用 JWT 作为 不记名令牌 时,建议避免在 URL 中发送它们。请参阅 RFC 6750 中的以下引用:
Don't pass bearer tokens in page URLs: Bearer tokens SHOULD NOT be passed in page URLs (for example, as query string parameters).
Instead, bearer tokens SHOULD be passed in HTTP message headers or message bodies for which confidentiality measures are taken.
Browsers, web servers, and other software may not adequately secure URLs in the browser history, web server logs, and other data structures. If bearer tokens are passed in page URLs, attackers might be able to steal them from the history data, logs, or other unsecured locations.