質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

8926閲覧

jwtのtoken漏洩した場合に備えてセキュリティ対策

K_T_T_K

総合スコア231

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/10/05 03:24

PHPを使ってWeb APIを作っています。
使用しているJWTライブラリです。
https://github.com/firebase/php-jwt

流れは、
1.クライアント側(JavaScript)がauth apiを叩きます。
2.ログイン成功時、username/password/expを含めたjsonを
jwtにし、クライアント側へ返します。
3.その後は他のapiを叩く際に、2のjwtを渡してもらいユーザーを特定していく流れです。

質問です。
2の時に、jsonとkey(サーバ側で定めた固定な文字列)で作られたjwtは
組み合わせが同じだと必ず生成されるjwtが同じです。
そこで、有効期限設定等したいのですが、仮にそのjwtが
第三者に漏れてしまった場合、成り済ましされる可能性があります。

このような場合どうするのが良い対応策になりますでしょうか?
どなたかアドバイス宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

2.ログイン成功時、username/password/expを含めたjsonを
jwtにし、クライアント側へ返します。

このjwtにすべての情報が詰まっている以上,これが得られれば成り済ませてしまいます.
jwtは暗号化するわけではないので手に入れた時点でjsonの中身(username,password,exp)が知れるわけです.
サーバから返す際に,passwordを平文のまま含めるのは奨められません.
jwtにはusername,expを含ませますが,passwordは入れないべきです.

  1. クライアントはusername, passwordをサーバに送信
  2. サーバはusername, passwordによりユーザを認証,鍵を用いてjwt(username,expを含む)を発行
  3. 発行されたjwtによりapiを叩く

といった認証の方が,セキュリティは向上するでしょう.

その他,例としてGmail APIでは
username,passwordから,サーバ側で認証して認証token文字列を生成して,
そのtoken文字列を利用することでAPIを叩いて個人情報にアクセスしています.
https://developers.google.com/gmail/api/

投稿2015/10/15 04:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/10/15 04:57

タイトルが"jwtのtoken漏洩した場合に備えてセキュリティ対策"でしたが,触れていませんでした. 上記の認証では,一時tokenが盗まれてしまった場合には,その有効期間内のみアクセスを許してしまいます.しかし,そのtokenにはpasswordが含まれていないため,新しいtokenを発行することはできません.データの全損は免れるでしょう.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問