将jwt令牌作为url的一部分传递很不好吗?

时间:2019-05-23 10:50:14

标签: security jwt websecurity

您好,目前我有一个角度应用程序和java后端。在我的角度组件html中,我有一些图像,例如个人资料照片。用spring安全性保护提供图像文件的资源。 所以我的问题是将json网络令牌作为图像URL的一部分添加吗?会导致安全漏洞吗?这是一个坏习惯吗?

以下是我在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(&quot;http://localhost:8080/api/files/4eb81fa8-9c5d-4920-b0f5-c9239fb1cae7?access_token=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnbG9iYWxhZG1pbkBsb2NhbGhvc3QiLCJhdXRoIjoiUk9MRV9HTE9CQUxfQURNSU4iLCJleHAiOjE1NjExOTkwNTh9.UFvdgZNxs_O1uTjtUh64ko3A47R2fxZxYFX0aXv2Jp_TkVrmlBT1mzN40JwclGk3m0sCZONKbnVhgXXKy69DfQ&quot;);">
  <!--bindings={
  "ng-reflect-ng-if": "false"
}-->
</div>

感谢您的帮助。我想将access_token作为http get请求标头的一部分传递,但我在任何地方都找不到合适的代码。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

根据图像,您可能希望使其公开可用,或者考虑以其他方式将令牌发送到服务器(cookie可能会有所帮助)。

  

会导致安全漏洞吗?这是不好的做法吗?

正如我的previous answer中所述,JWT令牌的语法是URL安全的。这是RFC 7519的引文:

  

JWT表示为由句点(.)字符分隔的一系列URL安全部分。每个部分都包含一个base64url编码的值。 [...]

但是,将JWT用作承载者令牌时,建议避免在URL中发送它们。请参见RFC 6750中的以下引用:

  

不要在页面URL中传递承载令牌:不应在页面URL中传递承载令牌(例如,作为查询字符串参数)。

     

相反,承载令牌应该在采取保密措施的HTTP消息头或消息体中传递。

     

浏览器,Web服务器和其他软件可能无法充分保护浏览器历史记录,Web服务器日志和其他数据结构中的URL。如果在页面URL中传递了承载令牌,则攻击者可能能够从历史数据,日志或其他不安全的位置中窃取它们。