Is het veilig om een ​​jwt in de url te plaatsen als een queryparameter van een GET-verzoek?

Is het veilig om een ​​jwt (json webtoken) in de url te plaatsen als een queryparameter van een GET-verzoek?


Antwoord 1, autoriteit 100%

Het kan veilig zijn onder de volgende omstandigheden:

  1. de JWT is slechts eenmalig te gebruiken
  2. de claims jtien expzijn aanwezig in de token
  3. de ontvanger implementeert replay-beveiliging correct met behulp van jtien exp

maar als het wordt gebruikt als een token dat herhaaldelijk kan worden gebruikt, b.v. tegen een API, dan heeft het leveren ervan als een queryparameter minder de voorkeur, omdat het in logs en systeemprocesinformatie terecht kan komen, die beschikbaar zijn voor anderen die toegang hebben tot de server of het clientsysteem. In dat geval zou het beter zijn om het te presenteren als onderdeel van een header of een POST-parameter.

Bovendien kunt u, door het in de queryparameters te gebruiken, tegen URL-limieten aanlopen op browsers of servers; als je het in een koptekst gebruikt, krijg je wat meer ruimte, het als een POST-parameter gebruiken zou het beste werken.


Antwoord 2, autoriteit 2%

Is het veilig om een ​​jwt (json webtoken) in de url te plaatsen als een queryparameter van een GET-verzoek?

Ja, voor zover een JSON Web Token (JWT) is gecodeerd op een manier die transparant is met de codering van een queryparameter in een URL:

Een JWT is veilig voor URL-codering. Er zal geen gegevensverlies zijn bij gebruik ter plaatse; er is geen extra codering vereist; het is zelfs inherent veilig voor URL-codering, het meerdere keren toepassen van url-codering (percentagecodering) op de JWT zal het niet vernietigen.

Deze veiligheid is beperkt:

Er kan een datalek zijn bij gebruik ter plaatse als de URL zelf deel uitmaakt van een dergelijk datalek. Gezien de manier waarop URL’s algemeen worden gebruikt, moet u elke JWT in een URL-queryparameter behandelen alsof het datalek al heeft plaatsgevonden en daarom de JWT er al op voorbereiden (bijv. replay-aanvallen voorkomen).

En het zal in het beste geval net zo veilig zijn als het transport van de URL-informatie is, en nooit veiliger.

En als het transport van de URL-informatie niet veilig is, kan alles in de URL ook nooit veiliger zijn, inclusief de JWT bij gebruik als GET-parameter.


Behalve het gebruik ervan in een URL (wat mij lijkt als een transportmechanisme), wil je misschien extra gegevensretentie, protocol en zelfs je eigen systeemeigenschappen overwegen, inclusief die van de JWT in kwestie zelf.

Voor al deze hangt het ervan af.

Voor sommige van deze overwegingen, zie het andere antwoorden JSON Web Token (JWT) – RFC-7519incl. de genoemde updates daar.

Other episodes