面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

ATS(App Transport Security)を"Xcode8 beta6"+"iOS10 beta6"でテストしてみた

夏期休暇でだらけている間にXcodeβ5、β6と出ていたので、生活を戻しつつ検証記事含めもろもろ書いていこうかなと。
とりあえずβ5やる意味がないので、β6をいつも通り検証してみました。

テスト方法

テスト方法は、プログラムの使い回しで基本今までを踏襲していますが、下記赤字が変更点となります。

  • iOS10は、iOS10.0 beta6を使用
  • iOS9は、iOS9.3.4を使用
  • ATSは、最初Xcode7BuildのipaとiOS9の組み合わせで発動していたので、Xcode7BuildとXcode8Buildで違いでるか比較
  • NSAllowsArbitraryLoadsInWebContentの設定で挙動がどう変わるか確認
  • HTTPSは、URLにhttps://www.apple.com/を使用
  • HTTPは、URLにhttp://www.yahoo.co.jp/を使用
  • HTTP(LAN)は、MAMPを使用してURLにhttp://192.168.0.12/を使用
  • UIWebView / WKWebView / NSURLSession / SFSafariViewController の4つで比較
  • キャッシュ?のようなものが残り不自然な挙動があったため、テスト毎にテストアプリをインストールし直して実行
  • ATSは表のKeyのみを設定
  • 補足としてnoneとなっているものはKeyを削除している状態のこと

↓↓↓以下結果 (赤字が前回と比較して変わった点 )↓↓↓

Xcode7.3.1 Build

f:id:aryzae:20160819011610p:plain

Xcode8.0 beta6 Build

f:id:aryzae:20160819011619p:plain

結果

  • NSAllowsArbitraryLoadsInWebContentがWKWebViewとUIWebViewに効いていて説明通りになりました。
  • 以前起きていたUIWebViewDelegateのwebViewDidFinishLoad(_:)が2回呼ばれる不可解な現象も再現しなくなったので、解消されたと思います。


新しい下記KEYがβ6で候補に出てこなかったので、実装されているかは未検証のため不明ですが、9月も近づいてきているのでβ版もあと1回でるかどうかぐらいでしょうか?
β版中に1回は検証したいですが・・・時間があれば・・・。

  • NSAllowsArbitraryLoadsInMedia
    • AVFoundationからAPIを使ったメディアのロードの許可/不許可ぽい
  • NSAllowsLocalNetworking
    • ATSを無視してLocal IPからのリソースの読み込みの許可/不許可
  • NSRequiresCertificateTransparency

===関連記事===

Xcode8.0 beta の記事

aryzae.hatenablog.com

Xcode8.0 beta2 の記事

aryzae.hatenablog.com

Xcode8.0 beta3 の記事

aryzae.hatenablog.com

Xcode8.0 beta4 の記事

aryzae.hatenablog.com

Xcode8.0 beta5 の記事

検証していないのでなし。