web-dev-qa-db-ja.com

localhostをApp Transport Security(ATS)NSExceptionDomainsに追加しても安全ですか?

セキュリティの観点から、開発用にlocalhostをATS NSExceptionDomainsに追加することは安全ですか?すべてのコミットの前にInfo.plistファイルからこれらの行を削除することはあまり便利ではありません(そして忘れがちです)。

<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

さらに、Appleこれによりアプリケーションを拒否できますか?

23
KlimczakM

これで、ローカルアドレスに対してこれを行うことができます。

<key>NSAppTransportSecurity</key>    
<dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>

AppleはこのキーをATS例外として祝福しました—それを使用するアプリを拒否しないと述べています。詳細はこちら: https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html (「ローカル」のページで検索)

76
Joseph

アプリの製品版で必要ない場合は、2つの異なるInfo.plistファイルを使用するようにビルド構成を設定します。基本的には、plistの内部バージョンを「Internal-Info.plist」として設定し、localhostを除外することができます。次に、その除外がないプロダクション「Info.plist」を用意します。Appleアプリを現在または将来拒否する理由はありません。

ビルドのタイプに適したInfo.plistを自動的に取り込むようにビルドを構成するには:

  1. 左側のナビゲーターからプロジェクトを選択します
  2. 変更するターゲットを選択します([ターゲット]の下)
  3. 「ビルド設定」をクリックします
  4. 「Info.plist」を検索
  5. 「パッケージ化」セクションで、「Info.plistファイル」という設定が表示されます。行を選択し、小さな三角形をクリックして展開します。これにより、ビルド構成ごとに異なる設定を使用できます。 「Debug」の値を「Internal-Info.plist」に変更します

「Info.plist」を「Internal-Info.plist」という新しいファイルにコピーし、「Info.plist」から除外を削除してください。これで問題ありません。

Appleはこれについて今あなたを拒否することができます(Appleが知っているだけです)が、2017年以降、Appleは、ATS除外の正当な理由が必要になるため、 localhost ATS要件を除外する正当な理由がない限り、今すぐ正しく設定するのが最善です。

3
wottle