OAuthの Redirect URL にHTMLエスケープされたstateが渡される
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 公式アカウント
こちらを URL Encode に変更する設定はございません。
こちらの件に関しましても、ご要望がございましたことを担当の者に報告させていただきました。
貴重なご意見、ありがとうございます。
2021.04.19
업데이트 된 답글입니다.
Connectdev 投稿者
わたしとしてはJSONをBase64エンコードすれば動作するため問題ありません。
しかし、もしかすると本件は脆弱性の原因になる可能性がありそうに感じたため、それらを考慮した対応を検討したほうがよいかもしれません。
まずstateのパラメーターはCSRFチェックに使われるとこのとですが、stateに指定外の値が渡されるということは、CSRFチェックが動作しない可能性があるのではないでしょうか。
次にHTMLエスケープされるということは、URLに想定外の&が入ります。そのため、任意のURLパラメーターを書き換えられる可能性、例えば想定外のAuthorization Codeを読み込んでしまう可能性はないでしょうか。
こちらに書き込む内容として不適切であれば削除していただいて構いません。
2021.04.19
업데이트 된 답글입니다.
Connectdev 投稿者
2022.04.07
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。