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

Connectdev

2021.04.15既読 3704

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エンコードが正しいと思われるのですが、なにか設定などで変更できたりするのでしょうか。

コメント3

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

    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
  • 업데이트 된 답글입니다.

    Connectdev 投稿者

    こちらAPI 2.0でも再現することを確認しました。

    2022.04.07

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

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。