JWT
JWTとは
- Json Web Token
- JSONをTokenとしてHTTPヘッダに含めてサーバに送信し、認証とかをする(曖昧)
- Cookieの代替として使える
- JSONに任意のデータを保存してやりとりできるのでCookieより利便性が高い模様
型式
Header
{ "alg": "HS256", "typ": "JWT" }
Payload
{ "iss": "Hoge Publisher", "sub": "Hoge User" }
Signature
- HeaderとPayloadのHash
セキュリティ対策
- ヘッダーはBase64エンコードされているだけなので改竄可能
- alg属性をNoneに書き換えて認証を突破しようとするケースが多い
- 対策としてサーバ側で暗号アルゴリズムは必ず指定する(リクエストされた内容を信用しない)
- JWTには署名を付ける
- 暗号アルゴリズムは必ず指定する(Noneは禁忌)