とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

3/3 忙しい人のためのApp Transport Security #tryswiftconf

try!Swiftのセッションまとめシリーズです。niwatakoさんの「App Transport Security for Busy Devs」についての記事になります。

資料

内容

自己紹介

  • 日本語で書き起こしブログを書いている
  • 金閣がある京都から来た
  • ゴールドのMacBookがお気に入り
  • はてな社のiOSエンジニア

ATS

  • 去年のWWDCでATSの必須化が発表
  • ATSとは

    • iOS9で登場
    • サーバとの通信を安全性の高いHTTPSだけに限定
  • HTTPSに安全安全でないとは?

    • 古い、強度が弱い場合は安全性が低下
    • 詳しい基準はこちらを参照
    • nscurlコマンドたたけば基準満たしているか確認できる
  • 安全性の低いHTTPSに接続するには?

    • NSAllowsArbitraryLoads
      • ATSの全ての機能を無効化
    • NSExceptionDomains
    • NSAllowsArbitraryLoadsForMedia
      • AVFoundationの通信についてATSの制限を解除
    • NSAllowsArbitraryLoadsInWebContent
      • UIWebView、WKWebViewの通信についてATSの制限を解除
    • NSAllowsLocalNetworking
      • ローカルのホストの通信についてATSの制限を解除
  • 自分の会社のアプリの場合

    • HTTPかもしれないし、HTTPSかもしれない
    • つまり、ATSすべて無効化する必要はない
    • → WebViewを対象にATSを無効化するNSAllowsArbitraryLoadsInWebContentを使用
  • NSAllowsArbitraryLoadsInWebContentのバグ

    • NSAllowsArbitraryLoadsInWebContent
      • 安全性の低いHTTPSに接続できない
      • OSバージョンによって挙動が異なる(バグ)
  • ATS必須化の時期

    • 2016年の末と言われていたが延期になった
    • 結論、今は何もしなくていい
  • 伝えたいこと

    • Appleのドキュメントを信じるだけではだめ
    • 仕様と実際の動きの両方を確認した方が良い
    • マイナーバージョンも含め確認した方が良い

その他このトークに関する情報源

togetter

App Transport Security for Busy Devs #tryswiftconf - Togetterまとめ