LoginSignup
7
7

More than 5 years have passed since last update.

【iOS10】ATSのおさらい

Last updated at Posted at 2016-12-11

この記事は「iOS その2 Advent Calendar 2016」10日目の記事です。
テーマは、 2016年中 にiOSにおけるATSをおさらいしよう! です。

自己紹介

私は、株式会社サイバーエージェント CA ProFit-X という広告プロダクトで、メディア様の収益を最大化することを目標にエンジニアをやってます。
CA ProFit-X は、モバイル向けネイティブ広告(主にインフィード広告)専業のSSP事業者なのです!

お題

モバイルアプリ/モバイルウェブサービス上で広告運用時に気にしておきたい ATS について、今回は最新OSである iOS10 にターゲットを絞り、お話ししたいと思います。

ATSとは?

ATSは、App Transport Securityの略で、2015年にiOS9がリリースされた際に導入されたセキュリティ仕様です。
詳しい仕様は コチラ(Apple Developer Library)です。

簡単に言うと、アプリとWEBサービス間の接続のプライバシーと、データの整合性を向上を目的に、セキュリティ仕様に準拠していない接続は認めないってことです。
例えば下記とか。

サーバー証明書に関する要件

  • パブリック認証局が発行していること
  • 証明書鍵長について
  • 署名アルゴリズムについて

Webサーバーに関する要件

  • HTTPSについて
  • SSL/TLS のバージョンについて
  • Forward Secrecy に対応している暗号化スイートについて

2017年からは対応が必須になる

原則対応が必須になります。新規アプリ/既存アプリ問わずApp Storeに提出するには ATS有効化が必須条件 です。

対象

まぁ、ほとんど全部ですね。

  • iOS9.0以上
  • WKWebView
  • UIWebView
  • NSURLSession
  • NSURLConnection

ATSを無効化するには?

基本的に、セキュリティ仕様に準拠しとけば良いのですが、いちおう。
細かいキーの仕様についてはコチラです。

NSAllowsArbitraryLoads

  • デフォ値は No
  • Yes に設定した場合
    • `NSExceptionDomains(オプション)で設定したドメイン以外のネットワーク接続が全てATS無効となる

文章に突っ込む時にもう少し分かりやすくしないとなー。
- App Storeへアプリを提出する際にAppleに対する説明が必要になる
- (後述する)NSAllowsArbitraryLoadsInWebContentが Yes の場合、このキーは無効になる

NSAllowsArbitraryLoadsInWebContent

  • デフォ値は No
  • Yes に設定した場合
    • 下記のネットワーク接続がATS無効化される
      • WKWebView
      • UIWebView
    • つまり、NSURLSession/NSURLConnection接続はATS有効のまま、WebViewのみATS無効となる
  • iOS10以上が対象、iOS9以下については本キーを Yes にした上で、NSAllowsArbitraryLoads も設定する



(´ε`;)ウーン…

まとめ

iOS10なら、WebViewでATSを無視できるっちゃできるのね。

でも、これはAppleの独断とかではなく、セキュリティ的に安全な配信をしていこうぜって大きな流れの1つなわけで。
GoogleもHTTPSサイコー!って言ってるわけだし。

ATS対応ができねーとかケチくさいこと言わずに、堂々とやってやりましょうよ!

7
7
2

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
7
7