2016-07-21 47 views
7

它是安全的,在安全方面,增加localhost到ATS NSExceptionDomains用於開發?這是不是很方便(而且很容易忘記)到每一個承諾之前,從Info.plist文件中刪除這些行。它是安全的本地主機添加到應用程序傳輸安全(ATS)NSExceptionDomains?

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

此外,蘋果是否可以因此拒絕該應用程序?

回答

27

您現在可以對本地地址做到這一點:

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

蘋果擁有得天獨厚此鍵爲ATS例外 - 它已經表示,不會拒絕使用它的應用程序。更多的信息在這裏:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html(在本地搜索)

+0

這就是我想要的!它自iOS10起可用,謝謝! – KlimczakM

+0

沒有爲我工作:(我可能不知道在哪裏寫它。 –

+1

@PareshThakor也許是這樣的:\t NSAppTransportSecurity \t \t \t NSAllowsLocalNetworking \t \t \t Jonny

2

如果應用程序的生產版本是不需要的,我會成立您的構建CONFIGS使用兩個不同的Info.plist文件。你基本上可以將你的內部版本的plist設置爲「Internal-Info.plist」,並在其中包含localhost排除。然後有生產「的Info.plist」,它不具有排除,讓蘋果沒有理由拒絕可能現在或將來您的應用程序。

要配置建立在正確的Info.plist自動扳爲構建類型:

  1. 從導航器選擇項目向左
  2. 選擇要更改目標(下「目標」)
  3. 點擊「生成設置」
  4. 搜索「的Info.plist」
  5. 在包裝部分,你應該可以看到一個名爲「Info.plist文件」設置。選擇該行,然後單擊該小三角形將其展開,以便對不同的構建配置可以有不同的設置。將「Debug」的值更改爲「Internal-Info.plist」

確保將「Info.plist」複製到名爲「Internal-Info.plist」的新文件中,將「 Info.plist「,你應該很好。

蘋果現在可以拒絕你(只有蘋果知道),但從2017年開始,蘋果將要求有任何ATS排除的正當理由,所以除非你有排除本地主機ATS要求的有效理由,否則它是最好的現在就設置正確。

+0

這將使我保持兩個plists ...容易忘記添加一些東西。 – KlimczakM

+0

你可以添加腳本到您的構建設置,可能只刪除了發佈版本的本地主機例外。我們很少更改Info.plist,因此保持兩個副本很小。但是,通過一些腳本,你可以將它作爲自動構建過程的一部分,並且仍然可以維護一個Info.plist。 – wottle

+0

另外,每次提交到應用商店時,你是否可能忘記刪除plist中的條目? – wottle