新人奮闘記10
iOS入門
前回、httpリクエストにてJSONデータを取得しようとATSの無効化を行う方法を記載しましたが、よりセキュアな方法を追記したいと思います。
前回はinfo.plistファイルにて、Allow Arbitrary LoadsキーをYESにし、ATSを無効にする方法は主にデバッグ用となっており、実際は特定のドメインを指定しATSを無効化する方がセキュリティ上好ましいかと思います。
※とにかくHTTP通信を許可したい場合は前回の記事新人奮闘記9に記載しています。
ATSの例外ドメインを指定し、アクセスする事が出来たので、記載しておきます。
[info.plist]
[xml]
[主にハマったキー]
中々、ドメインを指定してもATSの対象となってしまい、アクセスがうまくいかなかったはキーの指定に誤りがあり、以下のキーを指定したところ、無事リクエストに成功しました。
NSIncludesSubDomains をYESとする事で全てのサブドメインを含めてATSの例外として有効にする事ができます。
NSExceptionAllowsInsecureHTTPLoadsをYESとする事で、ATSの対象から除外する事ができます。
NSExceptionRequiresForwardSecrecyは、暗号スイートを設定するためのものでYESかNOで使用できる暗号スイートを変更する事ができますが暗号スイートについては割愛します。
デフォルト値(YES)では以下の暗号スイートに制限されてますが、その他の暗号スイートを許可したい場合はNOを設定します。また今回はNO指定していますが、特にOpenWeatherMapを利用する場合は、指定する必要なく動作しました。
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
必要になった際、詳しく記述したいと思います。
まとめ
・キーAllow Arbitrary Loadsはデバック時のみの利用にとどめる。
・ATSを無効化する場合は、必要最低現のアクセスにとどめるため、ドメインを指定する
・指定したドメイン(キー)を対象にNSExceptionAllowsInsecureHTTPLoadsを設定する。
・指定したドメインに対して全てのサブドメインを対象にする場NSIncludesSubDomainsを設定する。
keny
admin at 2016年08月25日 10:00:46