Realmente no hay una diferencia de seguridad si tanto la aplicación de escritorio como la aplicación de navegador se crean correctamente. Sin embargo, definitivamente me inclino por la aplicación del navegador porque obtienes varias funciones "gratis" (por ejemplo, PKI para HTTPS).
Todas las medidas de seguridad que están presentes en los navegadores modernos pueden integrarse en una aplicación de escritorio. El problema es que probablemente requeriría más esfuerzo de desarrollo y permitiría más lugares donde puedan ocurrir errores.
Divirtámonos un poco con contraargumentos ahora:
El escritorio es más seguro ya que evita que personas aleatorias manipulen nuestros datos si no tienen el programa
LOL! < sarcasmo > Sí, la ingeniería inversa no existe, y la oscuridad puede evitar las escuchas ilegales < / sarcasmo & gt ;.
Con la cantidad de poder de cómputo que tenemos hoy, la seguridad a través de la oscuridad es cada vez menos posible. Un par de megabytes de tráfico volcado en un modelo estadístico puede construir una especificación de cómo se envían los datos. Y, a menos que nunca repita los mismos comandos en la interfaz de administración, no puede escapar de un modelo estadístico utilizando solo la oscuridad.
Su única opción es el cifrado. Lo que significa que necesitará implementar TLS completo. Y por completo me refiero a TLS (podría usar openssl para esta parte) y HSTS, y una ruta de revocación para certificados comprometidos, y un CSP también sería bueno. Y todo eso con el suficiente cuidado como para no cometer errores. La criptografía no permite espacio para errores de codificación.
La empresa rival está empleando este método. Actualmente son el número 1 en el mercado.
MasterCard todavía usa mainframes para procesar (algunos de sus) datos de Chipcard. Y aún así enviar diferentes archivos de compensación en distintos sabores EBCDIC. ¿Todos usaremos mainframes para pagos?
Aún puede cometer errores en la aplicación web y hacer que sea peor que una aplicación de escritorio. Pero hay mucha documentación sobre cómo proteger aplicaciones web.
También hay buenos marcos para crear aplicaciones de escritorio que vienen con la comunicación TLS. Usar uno de esos (Python paramiko y Microsoft WIF vienen a mi mente) es una opción, pero vea la siguiente sección:
punto extra
El talón de Aquiles (en términos de seguridad) de las aplicaciones de escritorio es su árbol de dependencia. Una aplicación de escritorio requerirá docenas de bibliotecas, que pueden tener errores de seguridad. Deberá vigilar los CVE de todas las bibliotecas. Y, si una de las bibliotecas resulta no ser muy popular, no habrá muchos cazadores que lo vean.
(Eso también es cierto con las bibliotecas de JavaScript impopulares)
Y finalmente, la aplicación de escritorio se actualiza . Encontraste que tu aplicación de escritorio es vulnerable a algo y lo parchó. ¡Bueno! Pero ahora necesita distribuir la nueva versión a todos los que la usan, incluido el tipo que está trabajando desde su casa durante los últimos dos meses. De acuerdo, puede enviarle un correo electrónico con el nuevo instalador. Pero espera, ¿no se puede manipular el correo electrónico? O incluso en un punto más mundano, ¿puedes estar seguro de que actualizará su aplicación?
Una aplicación web es mucho más fácil de actualizar.