# ニュース: LIFF v2.1.14、v2.2.1、v2.3.2をリリースしました

LIFF v2.1.14、v2.2.1、v2.3.2をリリースしました

LIFF v2.1.14、v2.2.1、v2.3.2をリリースしました。変更点は以下のとおりです。

機能の変更はありません。

# LIFFエンドポイントURLに含まれるURLフラグメントがliff.permanentLink.createUrl()で正しく処理されない不具合を修正しました


対象バージョン

  • LIFF v2.3.2

変更点

LIFFのエンドポイントURLにURLフラグメント(#URL-fragment)が含まれていた場合、liff.permanentLink.createUrl()を実行した際、[LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてるにも関わらずパーマネントリンクにURLフラグメントが含まれる不具合がありました。

問題が発生する条件
  • LIFFのエンドポイントURLにURLフラグメントが含まれている
  • LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.com/path#sectionに設定されていて、liff.permanentLink.createUrl()を実行するとhttps://liff.line.me/{liffId}/path?liff.state=#sectionがパーマネントリンクとして返されていました。LIFF v2.3.2では、https://liff.line.me/{liffId}が正しく返されるよう修正されています。

# LIFFエンドポイントURLに含まれるクエリパラメータがliff.permanentLink.createUrl()で正しく処理されない不具合を修正しました 


対象バージョン

  • LIFF v2.3.2

変更点

LIFFのエンドポイントURLにクエリパラメータ(?key=value)が含まれていて、同じクエリパラメータが含まれるLIFF URLでliff.permanentLink.createUrl()を実行するとクエリパラメータ部分が無限増殖したパーマネントリンクが返される不具合がありました。

問題が発生する条件
  • LIFFのエンドポイントURLに含まれるクエリパラメータとliff.permanentLink.createUrl()を実行する際のLIFF URLのクエリパラメータが一致する
  • LIFF URLの追加情報の処理方法]が「連結」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.com/path1/?q1=v1&q2=v2に設定されていて、https://liff.line.me/{liffid}/?q1=v1&q2=v2liff.permanentLink.createUrl()を実行すると、https://liff.line.me/{liffid}/?q1=v1&q1=v1&q2=v2&q2=v2のようにクエリパラメータ部分が無限増殖したパーマネントリンクが返されていました。

LIFF v2.3.2では、https://liff.line.me/{liffid}/?q1=v1&q2=v2が正しく返されるよう修正されています。

# LIFFエンドポイントURLに含まれるパスがliff.permanentLink.createUrl()で正しく処理されない不具合を修正しました


対象バージョン

  • LIFF v2.3.2

変更点

LIFFのエンドポイントURLにパスが含まれていて、パスの末尾にスラッシュ(/)が使用されていた場合、liff.permanentLink.createUrl()を実行して取得したパーマネントリンクをクリックすると以下のようにパスの末尾のスラッシュ(/)がリダイレクト先に含まれない不具合がありました。

問題が発生する条件
  • LIFFのエンドポイントURLにパス(/path/)が含まれていて、パスの末尾にスラッシュ(/)が使用されている
  • LIFFのエンドポイントURLにクエリパラメータ(?key=value)やURLフラグメント(#URL-fragment)が含まれている
  • LIFF URLの追加情報の処理方法]が「連結」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.com/path/?id=xxxxxxxに設定されていて、liff.permanentLink.createUrl()を実行して取得したパーマネントリンクにアクセスするとパスの末尾のスラッシュ(/)がリダイレクト先に含まれず、https://example.com/path?id=xxxxxxxに遷移されていました。

LIFF v2.3.2では、https://example.com/path/?id=xxxxxxxへ正しく遷移されるよう修正されています。

LIFF v2.4.0は修正済みです

2020年8月31日にお知らせしたとおり、この不具合の修正はLIFF v2.4.0にすでに反映されています。

# 2次リダイレクト先URLにフラグメントが含まれない不具合を修正しました


対象バージョン

  • LIFF v2.3.2

変更点

LIFFのエンドポイントURLやLIFF URLにURLフラグメントが含まれていた場合、[LIFF URLの追加情報の処理方法]の設定に関わらず、2次リダイレクト先URLにフラグメントが含まれない不具合を修正しました。

2次リダイレクト先URLや[LIFF URLの追加情報の処理方法]の設定による2次リダイレクト先URLへの影響について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

# LIFF URLが意図しないURLへリダイレクトされる不具合を修正しました


対象バージョン

  • LIFF v2.1.14
  • LIFF v2.2.1
  • LIFF v2.3.2

変更点

LIFF URLに指定した追加情報(例:path/?key=value)は、1次リダイレクト先URLではliff.stateクエリパラメータに含まれます。liff.stateクエリパラメータに追加情報が含まれる場合に、以下のように意図しない2次リダイレクト先URLに遷移する不具合がありました。

問題が発生する条件
  • liff.stateクエリパラメータの先頭に/がない
  • LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.comに設定されており、liff.stateクエリパラメータがpathだった場合、ドメイン名とパスが/で分離されず、https://example.compathにリダイレクトされていました。
LIFF v2.1.14、v2.2.1、v2.3.2では、https://example.com/pathに正しくリダイレクトされるよう修正されています。

意図しないリダイレクトによる脆弱性について

この不具合を利用することで、悪意あるサイトへ誘導される危険があります。v2.4.0より前のLIFF SDKをお使いの場合はアップデートをおすすめします。

LIFF URLへのアクセス時の動作について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。