Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Guía de seguridad

Descripción general

Utilice esta guía de seguridad al compilar y publicar un iOS aplicación de billetera digital que integra el SDK de NFC Wallet.

Esta guía es un conjunto de directrices de seguridad que debe aplicar antes del lanzamiento.

Directrices generales de seguridad

Use la versión más reciente del SDK de NFC Wallet

Use la versión más reciente del SDK de NFC Wallet. Incluye las últimas actualizaciones y correcciones de seguridad.

Use la compilación Release del SDK de NFC Wallet

Antes de publicar en el App Store, configure su aplicación de billetera digital para usar la Release compilación.

Elimine los símbolos de depuración

No publique con símbolos de depuración. Esta práctica aumenta la complejidad de los esfuerzos de ingeniería inversa y evita la fácil identificación de variables, estructuras y lógica sensibles.

Evite fugas de datos sensibles

Borre los datos sensibles de la interfaz antes de que la aplicación entre en segundo plano.

Cifre o elimine los datos hasta que la aplicación vuelva al primer plano.

Evite registrar información sensible.

Use ofuscación de código

Use la ofuscación para aumentar el coste de la ingeniería inversa.

Proteja la comunicación de red

Use HTTPS para todas las llamadas de red al backend de la billetera digital.

Evite los certificados autofirmados.

Si implementa anclaje de certificados, siga estas directrices:

  • Compare el nombre de host con el certificado hoja.

  • Valide la cadena completa de certificados frente al almacén de confianza del sistema.

  • Rechace los certificados caducados.

  • Ancle el hash SHA-256 de la CA raíz o del certificado hoja.

Si envía datos confidenciales que contengan información de identificación personal (PII), agregue cifrado y autenticación a nivel de aplicación cuando sea necesario.

Añada protección RASP

Use una solución comercial de Runtime Application Self Protection (RASP).

Detecte y responda a:

  • Root o jailbreak.

  • Depuración.

  • Hooking.

  • Manipulación de la app.

  • Ejecución en emulador.

Registro

Evite escribir datos sensibles en los registros del dispositivo.

Use flags de compilación para excluir los registros de depuración de las compilaciones del entorno de producción.

Adopte prácticas de codificación segura

Aplique prácticas de codificación segura durante todo el desarrollo. Por ejemplo, debería:

  • realizar validación de entradas.

  • gestionar correctamente la memoria.

  • usar funciones seguras de C.

  • evitar el uso de contenedores inmutables para almacenar datos sensibles.

Para una lista de verificación básica, consulte OWASP Prácticas de codificación segura.

Estas prácticas pueden hacerse cumplir mediante herramientas de análisis estático de código como PMD o HP Fortify.

Realice auditorías y pruebas de penetración

Realice auditorías de arquitectura y código, además de pruebas de penetración, para identificar vulnerabilidades y evaluar la postura general de seguridad de la aplicación.

Evalúe la resiliencia de la seguridad de la aplicación

Consulte el OWASP MASVS (Mobile Application Security Verification Standard) en OWASP MASVS. Esta es la base de requisitos de seguridad para aplicaciones móviles.

Se recomienda encarecidamente utilizar el checklist de OWASP MSTG para evaluar el nivel de seguridad de su aplicación.

Directrices de seguridad para desarrolladores de iOS

Evite la exposición de datos sensibles durante el ciclo de vida de la app

Elimine el contenido sensible de la interfaz cuando la app pase a segundo plano.

Borre o cifre los datos sensibles hasta que la app vuelva al primer plano.

Evite registrar datos sensibles.

Use estos hooks de iOS:

  • applicationWillResignActive: Limpie la pantalla. Cifre los datos sensibles.

  • applicationDidBecomeActive: Restaure la interfaz. Descifre los datos sensibles.

  • UIScreenCapturedDidChangeNotification: Detecte la captura de pantalla. Elimine el contenido sensible de la interfaz.

Ejemplo: oculte el contenido de la app al dejar de estar activa.

Elimine los símbolos de la salida de Xcode

Para Xcode, establezca estos valores en la configuración de compilación de lanzamiento:

Gestione datos sensibles en Swift

Minimice las copias de bytes sensibles.

Data es un tipo por valor en Swift. Asignarlo o pasarlo puede crear copias de los bytes subyacentes.

Pase los bytes asignados por referencia (usando inout como argumento).

Borre Data después de usar:

Desactive la caché de autocorrección para la entrada sensible

Desactive la autocorrección para los campos que aceptan datos sensibles.

Use una de estas opciones:

  • Establece secureTextEntry = true.

  • Establece autoCorrectionType = UITextAutocorrectionType.no.

Desactive copiar y pegar para la entrada sensible

Desactive el menú de copiar/pegar para los campos sensibles. Esto evita que un atacante con acceso al dispositivo pegue y vea los datos copiados.

Evite la manipulación de la app

Verifique la integridad de la app en tiempo de ejecución para operaciones sensibles.

Puede calcular la suma de comprobación de la __text sección del __TEXT segmento.

Para obtener detalles de implementación, consulte la guía de OWASP MSTG (Mobile Security Testing Guide) sobre defensas antiingeniería inversa en iOS.

Use una ofuscación sólida para proteger la implementación de la suma de comprobación.

Active las opciones de refuerzo de Xcode

Use configuraciones de Xcode que dificulten la explotación y la ingeniería inversa.

Configuraciones recomendadas de Xcode

Gestione la distribución en el App Store

Los usuarios finales pueden descargar una versión anterior “última compatible” de su aplicación de billetera digital.

Cada versión publicada aumenta su superficie de ataque. Mantenga pequeño el conjunto de versiones compatibles.

Limite las descargas de versiones anteriores

Desactive las descargas de versiones anteriores en App Store Connect cuando sea posible.

Para conocer el comportamiento actual y las etiquetas de la interfaz de Apple, consulte App Store Connect.

Elimine rápidamente las versiones anteriores después de publicar una corrección de seguridad.

Se recomienda mantener una única versión actualizada de su aplicación de billetera digital. Ajuste la configuración de compilación para admitir una amplia gama de versiones de iOS.

Reduzca los entornos de ejecución inseguros

No distribuya compilaciones del simulador.

  • Desactive el destino del simulador: el destino de implementación solo debe incluir dispositivos iOS.

  • Desactive “Apple Silicon Mac Availability” en App Store Connect: ejecutar una aplicación iOS en un Mac M1 aumenta la exposición del binario de la aplicación y del sandbox.

Para más detalles, consulte la guía de Apple sobre ejecutar sus apps iOS en macOS.

Protecciones de la aplicación

Refuerce la aplicación de billetera digital durante la compilación y la distribución. Enfoque en la instalación lateral, la clonación y la manipulación en tiempo de ejecución.

Valide el entorno de ejecución

  • Asegúrese de que la app se ejecute en los dispositivos objetivo con una versión del sistema operativo, firmware y hardware compatible con el SDK.

  • Bloquee la ejecución en emuladores y dispositivos con jailbreak.

    Consulte la guía de OWASP MSTG sobre defensas antiingeniería inversa en iOS.

Controle los canales de distribución

Distribuya la aplicación de billetera digital solo a través de tiendas oficiales y canales verificados.

  • La aplicación debe verificar que se instaló desde la tienda prevista.

  • No permita la distribución por canales alternativos.

Aplique actualizaciones de seguridad (forzar actualización de la aplicación)

Asegure una actualización forzada de la aplicación en caso de correcciones de seguridad.

  • Bloquee el acceso al servicio cuando la versión instalada esté por debajo de la versión mínima permitida.

Detecte manipulación, resignado y clonación

  • Detecte cambios en la firma del código (resignado) y el repaquetado.

  • Detecte modificaciones del binario y de los recursos de la aplicación.

  • Vincule los datos sensibles de la aplicación a un dispositivo específico.

Cuando detecte un compromiso, asegúrese de que la cuenta relacionada quede en lista negra y de que se rechacen las transacciones.

Proteja los datos en tránsito

  • Use TLS 1.2 o TLS 1.3 para todas las conexiones con el backend del emisor.

  • Si implementa anclaje de certificados, planifique la rotación de certificados.

  • Use conjuntos de cifrado fuertes y rechace negociaciones débiles.

  • Agregue cifrado a nivel de aplicación cuando sea necesario.

Añada protecciones en tiempo de ejecución (RASP)

Asegúrese de que Runtime Application Self Protection esté disponible en la aplicación de billetera digital. Detecte la depuración y el hooking durante las operaciones sensibles.

Proteja los activos

Esta sección describe las mejores prácticas en el desarrollo de aplicaciones para proteger los activos.

Token de registro de FCM

Si la aplicación de billetera digital gestiona FCM a nivel de aplicación:

  • Evite persistir el token de registro de FCM durante más tiempo del necesario.

  • Asegure la confidencialidad e integridad de este activo.

Información de la tarjeta de financiación

Si la aplicación de billetera digital recopila datos de tarjetas de pago:

  • Desactive funciones UITextField arriesgadas, como AutoFill y copiar/pegar.

  • Use un teclado seguro.

  • Valide las entradas antes de usarlas.

  • No almacene de forma persistente los datos de tarjetas de pago.

  • Antes de mostrar la pantalla de entrada, aplique comprobaciones en tiempo de ejecución (detección de jailbreak, hooking, depuración y manipulación).

  • Asegure la confidencialidad e integridad de este activo.

Aplique los mismos controles a cualquier otra entrada sensible procedente de fuera de la app.

Certificado de firma de la app y certificado TLS

  • Controle el acceso al certificado de firma de la app.

  • No lo divulgue a terceros no confiables.

  • Asegure la confidencialidad e integridad de este activo.

Otros activos sensibles

  • Ofusque el código y proteja las cadenas sensibles incluidas en el binario.

  • Reevalúe los activos en cada versión (las nuevas funciones podrían añadir nuevos datos sensibles).

    • Evalúe el valor y la criticidad de cada activo y aplique la protección requerida.

  • No conserve datos transitorios. Borre los datos sensibles de la memoria cuando ya no sean necesarios.

  • Considere siempre el dispositivo como no confiable. Use RASP para ayudar a proteger el binario de la aplicación y las bibliotecas de terceros en tiempo de ejecución.

Última actualización

¿Te fue útil?