Interfaz de administración: Web vs escritorio

4

Estoy trabajando para construir un sistema que requiere una interfaz para controlar los datos existentes y agregar nuevos. Realmente no es nada complejo, solo unos pocos objetos relacionados con usuarios, organización, etc.

El problema es que mi jefe quiere que esta interfaz de administración se construya en un cliente de escritorio nativo, pero creo que está creando una sobrecarga innecesaria.

Somos una empresa pequeña y soy prácticamente el único desarrollador con experiencia de desarrollo de aplicaciones dekstop casi cero, excluyendo algunos cambios que realicé en Uni.

Usaremos listas blancas de IP y asignaremos un servidor dedicado para ambas soluciones, pero aquí están las diferencias en nuestro pensamiento.

Por favor avisame cual es mejor. ¿Vale la pena crear / mantener una aplicación dekstop?

Opiniones del jefe

  • El escritorio es más seguro ya que evita que personas aleatorias manipulen nuestros datos si no tienen el programa

  • La empresa rival está empleando este método. Actualmente son el número 1 en el mercado

Mis pensamientos

  • Esperar por la seguridad al crear una aplicación de escritorio es seguridad a través de la oscuridad en el mejor de los casos

  • A menos que usemos sockets, usará HTTP de todas formas, esencialmente para que sea lo mismo que una aplicación web, solo en un puerto diferente

  • La aplicación web es mucho más fácil de desarrollar y no tiene tantos problemas de compatibilidad

  • Incluso emplear OTP es más fácil aquí

pregunta dK3 20.10.2016 - 00:14
fuente

3 respuestas

5

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.

    
respondido por el grochmal 20.10.2016 - 01:54
fuente
3

Depende de cómo se construye, protege y usa la aplicación. Un problema típico de la administración basada en web es que se usa desde el mismo navegador, que también se usa para navegar por Internet. Esto hace posible utilizar el navegador como un trampolín para atacar sistemas internos desde el exterior.

Tales ataques de origen cruzado posibles con el navegador son especialmente falsificación de solicitudes entre sitios (CSRF) y Cross Site Scripting (XSS) pero también Encuadernación de DNS . Las interfaces de administración basadas en web a menudo no están protegidas de tales ataques, lo que significa que estos vectores de ataque se usan con éxito contra routers o incluso dispositivos de la industria .

Las aplicaciones de escritorio por sí mismas no tienen este tipo de problemas. Por supuesto, si la aplicación de escritorio solo está empleando una interfaz de navegador en segundo plano y está utilizando HTTP (s) para la comunicación, podría volver a tener los mismos problemas.

    
respondido por el Steffen Ullrich 20.10.2016 - 08:17
fuente
0

Aparte de lo que ya se dijo, debes considerar cómo tu aplicación va a hablar con lo que sea que esté administrando.

Si eso es una base de datos, y usted va con una aplicación de escritorio simple, significa exponer su servidor de base de datos a las conexiones de todos sus potenciales equipos cliente. Tenga en cuenta que cualquiera puede ver sus cadenas de conexión . Tendrá que confiar en las características de seguridad de su base de datos para la autenticación y autorización. Esta es un área de superficie enorme para asegurar.

Para una aplicación web, solo su servidor web necesita saber cómo comunicarse con su base de datos. Todo lo demás está oculto detrás de una fachada HTTP, y usted tiene un mayor grado de control sobre lo que pueden hacer sus clientes.

Por supuesto que podría hacer ambas cosas: exponer algún tipo de API web con la que hablarán sus aplicaciones cliente. Pero ahora tiene dos aplicaciones que mantener: la API y el propio cliente. A menos que espere tener más consumidores de su API, también estará mucho mejor haciendo la interfaz de usuario como una aplicación web.

    
respondido por el Alex J 27.12.2016 - 18:54
fuente

Lea otras preguntas en las etiquetas