10sec Tips

10秒tips

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

「取得できる情報」と「認証の根拠として信じてよい情報」は全く別物です。LINE連携で最もやりがちなセキュリティの落とし穴と、安全な実装パターンをサクッと整理しましょう!

⚠️ やってはいけない落とし穴

liff.getProfile()liff.getDecodedIDToken() で取得したユーザーIDや名前を、そのままサーバーへ送ってログインや会員連携に使うこと。

  • なぜ危険?: ブラウザやアプリ側で発生するデータは、悪意のあるユーザーによって途中で改ざん・差し替えが可能だからです。
  • 起こりうるリスク: 他人のユーザーIDに書き換えられた場合、サーバーが検証なしに受け入れると成りすましを許してしまい、個人情報の閲覧やポイントの不正利用につながります。

🔑 正しい情報の切り分けと認証設計

サーバーが信用すべきなのは、クライアントからの自己申告ではなく「確認・検証された結果」のみです。

情報の役割扱うデータ正しい使い道
画面用(表示)プロフィール情報(表示名・画像など)LIFFアプリの画面上に名前や画像を表示するため
認証用(本人確認)生のIDトークン または アクセストークンサーバーへ送り、LINE側に問い合せて検証するため

🛡️ 安全な認証の基本ステップ

  1. 画面側: 生のトークン(IDトークンまたはアクセストークン)を取得してサーバーへ送信。
  2. サーバー側: 受け取ったトークンをLINE側に確認(検証)する。
  3. 識別: 検証結果に含まれるユーザー識別子をもとに本人確認を行う。

📌 今日の10秒Tips

表示用は表示用、認証用は認証用!

サーバー認証に必要なのは、画面で見えるプロフィール情報ではなく、検証可能な「トークン」です。