90日目:JWT(Json Web Token)のセキュリティ(安全性・脆弱性・問題点)について色々調べる

GitHubでJWT(Json Web Token)のセキュリティについて話題になっていたので、JWTを使うのが良い方法なのか、それとも代替のものがあるのか、そして実際にJWTにを使用したWebサービスやアプリケーションがあるのかどうかについて調べました。

JWTのセキュリティ(安全性・脆弱性・問題点)と代替のサービス

Qiitaの@take4s5iさんの記事によると、JWTの問題点は以下のとおりだそうです。

署名アルゴリズムが選択可能になっていることで以下のセキュリティホール、リスクを生み出しています。

  • 署名の検証を通過できる任意のpayloadを偽造可能
  • noneという「署名なし」のアルゴリズムが仕様で実装必須
  • 公開鍵方式のアルゴリズムを選択すると、簡単に署名を偽造できる脆弱性がある。
  • 「アルゴリズムの選択」という専門的な内容が開発者任せになっている
  • 脆弱性のあるライブラリ実装が多い(多かった?)
    これらの点は「署名アルゴリズムが特定の共通鍵であること」をチェックすれば回避できます。
    しかしながら、仕様ではheaderに指定されたアルゴリズムを解釈・処理することを求めているので「特定のアルゴリズムしか受け付けないのは仕様非準拠である」という意見もあります。

では、何かJWT以外に代替品はあるのか、という話ですが、記事によると、

がおすすめされていました。

⇒(参照記事)JSON Web Token(JWT)って結局使っていいの?(Qiita)

実際にJWT(Json Web Token)を使用しているサービス

では、JWTは実際のWebサービスやWebアプリケーションで使用されていないのかと言えばそうでもなく、Yahoo!JAPANでの活用例が記事にまとめられていました。JWTの問題点の回避方法や、注意点、他社活用例(SORACOM、Amazon Cognito)などが詳しく網羅されています。

JSON Web Token(JWT)の紹介とYahoo! JAPANにおけるJWTの活用(Y!デベロッパーネットワーク2017年12月1日)

JWTが実際に使用されていると知って納得したと同時に、セキュリティ面での対策がかなり必要そうだなという印象です。

 

関連キーワード
  • 131日目~134日目:Udemyで一番人気のGit (&GitHub) コースを修了!学習した内容・学習にかかった時間とおすすめ度をご紹介: Completed Git course by Udemy "Git Complete: The definitive, step-by-step guide to Git" by Jason Taylor: Highly recommended to both beginner & intermediate leaner
  • 121日目~130日目:Udemyで新しいReactコース学習とGit & GitHubのコースを受講し始める #100dayofcode Round 2
  • 120日目:プログラミング学習100日チャレンジの完了とこれからの学習&ブログ記事:100days of code completed & from now on
  • 119日目:完成したWebアプリケーションの公開(Devconnector deployed on Heroku)
  • 118日目:Udemy講座の感想口コミ&自分に合った講座の選び方ポイント:Mern Stack Front to Back: Full Stack React, Redux & Node.js by Brad Traversy
  • 117日目:完成!Herokuへのデプロイ成功:Heroku CLIのインストールからWebアプリデプロイまで。Herokuの使い方と、package.jsonとgitコマンドではまったところと解決方法
おすすめの記事