# Info.plist

## General

Directorio de almacenamiento.

```shell
/private/var/containers/Bundle/Application/<app-ID>/<app-name>.app/Info.plist
```

Exportar archivo `Info.plist` desde el dispositivo.

```sh
scp <user>@<device-ip-address>:/private/var/containers/Bundle/Application/<app-ID>/<app-name>.app/Info.plist <destination-directory>
```

Conversión de formato de archivo.

```shell
# plistutil (Linux)
plistutil -i Info.plist -o info.xml

# plutil (MacOS / iOS)
plutil -convert xml1 Info.plist && cat Info.plist > info.xml
```

## App Transport Security (ATS)

Mejora la privacidad y la integridad de los datos al garantizar que las conexiones de red de las aplicaciones móviles utilicen únicamente protocolos y cifrados estándar de la industria sin debilidades conocidas. Se encuentra habilitado de forma predeterminada desde iOS 9.0.

Estructura general de configuración de App Transport Security (ATS):

```sh
NSAppTransportSecurity : Dictionary {
    NSAllowsArbitraryLoads : Boolean
    NSAllowsArbitraryLoadsForMedia : Boolean
    NSAllowsArbitraryLoadsInWebContent : Boolean
    NSAllowsLocalNetworking : Boolean
    NSExceptionDomains : Dictionary {
        <domain-name-string> : Dictionary {
            NSIncludesSubdomains : Boolean
            NSExceptionAllowsInsecureHTTPLoads : Boolean
            NSExceptionMinimumTLSVersion : String
            NSExceptionRequiresForwardSecrecy : Boolean
            NSRequiresCertificateTransparency : Boolean
        }
    }
}
```

### NSAllowsArbitraryLoads <a href="#app-transport-security-ats-nsallowsarbitraryloads" id="app-transport-security-ats-nsallowsarbitraryloads"></a>

El tráfico HTTP está bloqueado de forma predeterminada debido a App Transport Security (ATS), pero puede ser habilitado configurando el atributo `NSAllowsArbitraryLoads` en `YES/true` en el archivo `Info.plist`. Por lo cual, su valor debe ser `NO/false` o no estar definido en el archivo `Info.plist`.

```sh
grep NSAllowsArbitraryLoads -A 1 Info.plist
```

El siguiente fragmento ejemplifica la desactivación de las restricciones de App Transport Security (ATS) a nivel global en una aplicación móvil.

{% code title="Info.plist" %}

```xml
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
```

{% endcode %}

### NSExceptionDomains <a href="#app-transport-security-ats-nsexceptiondomains" id="app-transport-security-ats-nsexceptiondomains"></a>

#### NSExceptionAllowsInsecureHTTPLoads <a href="#app-transport-security-ats-nsexceptiondomains-nsexceptionallowsinsecurehttploads" id="app-transport-security-ats-nsexceptiondomains-nsexceptionallowsinsecurehttploads"></a>

Permite tráfico HTTP para un dominio específico, por lo cual, su valor debe ser `NO/false` o no estar definido en el archivo `Info.plist`.

```sh
grep NSExceptionAllowsInsecureHTTPLoads -A 1 Info.plist
```
