3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

iOSのURLスキームの脆弱性について

Last updated at Posted at 2020-06-05

概要

iOSのURLスキームが意外と脆弱だから気をつけた方が良いよと言う話をします。

※違うよ、とかあれば気軽にコメント頂ければ幸いです
※すみません、間違って一度記事を削除してしまいました。。orz もう一度再掲します

iOSのURLスキームについて

下記のようにURLスキームを叩くことがあると思うのですが、

hoge://〜

これってどの情報を元にどのアプリがこのURLスキームを受けるか決めているのでしょうか。

答えとしては、どのアプリが受け取ると言う情報が入っている訳ではありません。

なので

AアプリとBアプリでそれぞれ同じプロトコル名で受け取るようにしていた場合、どちらがそのURLスキームを受け取るかわかりません
(過去に確認した挙動だと、先にインストールされている方のアプリが受け取るようです)

Aアプリ

hoge://〜
を受け取るように実装

Bアプリ

hoge://〜
を受け取るように実装

奪い取りたいURLスキームのプロトコルなんて他の人わからないじゃんって思うかもしれませんが、
ツールなどで結構に気軽に他のアプリが受け取るURLスキームは調べることはできるようです。

Androidの場合は下記のように(アプリのパッケージ名)を指定することで起動するアプリを指定できます。

intent://〜#Intent;package=(アプリのパッケージ名);scheme=hoge;end;

SFSafariViewControllerの例外

アプリからSFSafariViewControllerを開きURLスキーム(Deeplink)で戻ってくることがあると思いますが、
その場合はSFSafariViewControllerを開いたアプリが優先的にURLスキームを受け取るようで、
他のアプリに先に奪い取られてしまうことはないようです。

まとめ

iOSでSFSafariViewController以外でURLスキームを送信・受信する際は、セキュリティに影響するような情報の受け渡しはやめよう。
iOSのURLスキームは他のアプリが受け取る可能性があることを考慮しよう。

参考:
https://blog.trendmicro.co.jp/archives/22020

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?