将localhost添加到App Transport Security (ATS) NSExceptionDomains中是否安全?

35

在安全方面,将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>

此外,苹果公司是否会因为这个原因拒绝申请?

2个回答

109

这正是我想要的!自iOS10以来就可用,谢谢! - KlimczakM
对我没用 :( 我可能不知道在哪里写它。 - Paresh Thakor
1
@PareshThakor 或许可以这样写:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsLocalNetworking</key> <true/> </dict> - Jonny
2
Apple has blessed... :) - Chris Prince

4
如果在应用程序的生产版本中不需要,我建议您设置构建配置文件以使用两个不同的Info.plist文件。您可以将内部版本的plist设置为“Internal-Info.plist”,其中包含本地主机排除。然后有一个生产“Info.plist”,它没有这种排除,这样苹果就没有拒绝您的应用程序的理由,现在或将来。
要配置构建以自动获取正确的Info.plist类型:
1.从左侧的导航器中选择您的项目 2.选择要更改的目标(在“TARGETS”下) 3.单击“Build Settings” 4.搜索“Info.plist” 5.在打包部分中,您应该看到一个名为“Info.plist File”的设置。选择行,然后单击三角形以展开,以便您可以为不同的构建配置设置不同的设置。将“Debug”值更改为“Internal-Info.plist”
请确保将“Info.plist”复制到名为“Internal-Info.plist”的新文件中,从“Info.plist”中删除排除即可。
苹果可能会因此拒绝您(只有苹果才知道),但是从2017年开始,苹果将需要任何ATS排除的有效原因,因此,除非您有排除本地主机ATS要求的有效理由,否则最好立即正确设置它。

那会让我维护两个 plist... 很容易忘记添加某些东西。 - KlimczakM
你可以在构建设置中添加一个脚本,仅针对发布版本,可以删除本地主机异常。我们很少更改Info.plist,因此维护两个副本非常小。但是,通过一点脚本编写,您可以将其作为自动化构建过程的一部分,并仍然能够维护单个Info.plist。 - wottle
此外,您更容易或更不容易忘记从 plist 中删除条目,每次提交到应用商店时? - wottle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接