10sec Tips
10秒tips
10秒でわかる!LINE連携のセキュリティ原則

「取得できる情報」と「認証の根拠として信じてよい情報」は全く別物です。LINE連携で最もやりがちなセキュリティの落とし穴と、安全な実装パターンをサクッと整理しましょう!
⚠️ やってはいけない落とし穴
liff.getProfile() や liff.getDecodedIDToken() で取得したユーザーIDや名前を、そのままサーバーへ送ってログインや会員連携に使うこと。
- なぜ危険?: ブラウザやアプリ側で発生するデータは、悪意のあるユーザーによって途中で改ざん・差し替えが可能だからです。
- 起こりうるリスク: 他人のユーザーIDに書き換えられた場合、サーバーが検証なしに受け入れると成りすましを許してしまい、個人情報の閲覧やポイントの不正利用につながります。
🔑 正しい情報の切り分けと認証設計
サーバーが信用すべきなのは、クライアントからの自己申告ではなく「確認・検証された結果」のみです。
| 情報の役割 | 扱うデータ | 正しい使い道 |
| 画面用(表示) | プロフィール情報(表示名・画像など) | LIFFアプリの画面上に名前や画像を表示するため |
| 認証用(本人確認) | 生のIDトークン または アクセストークン | サーバーへ送り、LINE側に問い合せて検証するため |
🛡️ 安全な認証の基本ステップ
- 画面側: 生のトークン(IDトークンまたはアクセストークン)を取得してサーバーへ送信。
- サーバー側: 受け取ったトークンをLINE側に確認(検証)する。
- 識別: 検証結果に含まれるユーザー識別子をもとに本人確認を行う。
📌 今日の10秒Tips
表示用は表示用、認証用は認証用!
サーバー認証に必要なのは、画面で見えるプロフィール情報ではなく、検証可能な「トークン」です。