OAuthの Redirect URL にHTMLエスケープされたstateが渡される - 組織連携 - LINE WORKS Developers : コミュニティ

コミュニティ

LINE WORKSのテクニカルエキスパート及び開発者と
コードのサンプル、リソース、Tip等を共有し問題解決への相談が可能です。

??dev_메인_타이틀_모바일_ja_JP??

組織連携

OAuthの Redirect URL にHTMLエスケープされたstateが渡される

Connectdev

2021.04.15既読 570

LINE WORKSのサービスAPIを利用するためOAuth認証を検証しています。
https://auth.worksmobile.com/ba/{API ID}/service/authorize へのパラメータとして「state=%7B%22projectId%22%3A%221%22%2C%22development%22%3Afalse%7D」を渡しています
URLエンコード前の値は「{"projectId":"1","development":false} 」というJSONになっています。
しかし、Redirect URL に戻ってきたstateは「state={"projectId":"1","development":false}」となっていました。
「”」が「"」という文字列に置き換わっているため、HTMLエスケープされているものと思われます。
URLのパラメーターの値なのでHTMLエスケープではなく、URLエンコードが正しいと思われるのですが、なにか設定などで変更できたりするのでしょうか。

コメント2

  • 업데이트 된 답글입니다.

    LINE WORKS 公式アカウント

    ご認識の通り、state パラメータは HTML Escape されます。
    こちらを URL Encode に変更する設定はございません。

    こちらの件に関しましても、ご要望がございましたことを担当の者に報告させていただきました。
    貴重なご意見、ありがとうございます。

    2021.04.19

    0
  • 업데이트 된 답글입니다.

    Connectdev 投稿者

    了解しました。よろしくおねがいします。

    わたしとしてはJSONをBase64エンコードすれば動作するため問題ありません。
    しかし、もしかすると本件は脆弱性の原因になる可能性がありそうに感じたため、それらを考慮した対応を検討したほうがよいかもしれません。

    まずstateのパラメーターはCSRFチェックに使われるとこのとですが、stateに指定外の値が渡されるということは、CSRFチェックが動作しない可能性があるのではないでしょうか。

    次にHTMLエスケープされるということは、URLに想定外の&が入ります。そのため、任意のURLパラメーターを書き換えられる可能性、例えば想定外のAuthorization Codeを読み込んでしまう可能性はないでしょうか。

    こちらに書き込む内容として不適切であれば削除していただいて構いません。

    2021.04.19

    0
前の投稿 大量の監査ログデータ
次の投稿OAuthのログイン画面が開けない