2009-01-31 11 views
22

¿Es Django una buena opción para una aplicación de seguridad crítica?¿Es Django una buena opción para una aplicación de seguridad crítica?

Lo estoy preguntando porque la mayor parte del software de banca en línea está construido con Java. ¿Hay alguna razón real para esto?

+8

No confunda Java (el lenguaje) con Django (un framework en Python). ¿Estás comparando algún marco de Java (es decir, Struts) con Django? ¿Estás comparando Java y Python? –

+0

este artículo menciona una vulnerabilidad de seguridad más o menos trivial en java.security.MessageDigest http://codahale.com/a-lesson-in-timing-attacks/. La vulnerabilidad también apareció en django.middleware.csrf, pero se ha solucionado (busque constant_time_compare en https://github.com/django/django/blob/master/django/middleware/csrf.py) – primroot

Respuesta

30

En realidad, la seguridad en Java y Python es la misma. Manejo de contraseñas solo de resumen, cookies que expiran rápidamente, eliminación cuidadosa de sesiones, autenticación de múltiples factores. Nada de esto es exclusivo de un framework Java o un framework de Python como Django.

Django, de hecho, tiene una arquitectura de backend de seguridad que le permite agregar su propia conexión LDAP (o AD), posiblemente cambiando la técnica de resumen utilizada.

Django tiene un modelo de perfil donde puede mantener factores de autenticación adicionales.

Django ofrece algunos decoradores estándar para ver la verificación de autorización de funciones. Dado que Python es tan flexible, puede escribir trivialmente sus propias funciones de decorador para aplicar capas en comprobaciones de autenticación diferentes o adicionales.

La seguridad es una serie de funciones de primera clase en Django.

17

Probablemente la razón detrás de Java no está en la seguridad. Creo que Java se usa más en las grandes compañías de desarrollo y los bancos usualmente recurren a ellos para sus necesidades de desarrollo (que probablemente no solo estén relacionadas con el sitio web, sino que también se encuentren más avanzadas en el back-end).

Por lo tanto, no veo razones de seguridad, en su mayoría culturales.

0

¿Está refiriéndose al hecho de que la aplicación completa está construida en Java, o simplemente la parte que ve en su navegador? Si es este último, la razón probablemente se deba a que en el contexto de las páginas web, los applets de Java se pueden descargar y ejecutar.

1

No debe confiar en la seguridad de la aplicación en el marco. A pesar de que Django tiene una cantidad bastante buena de medidas contra los problemas de seguridad clásicos, no puede garantizar que su aplicación sea segura, usted necesita mucho más que un Framework de programación para obtener una aplicación de seguridad crítica.

Yo diría que sí, Django es una buena opción siempre que conozca sus poderes y limitaciones, y conozca los fallos de seguridad de cada aplicación.

8

Las razones para construir aplicaciones bancarias en Java no están relacionadas con la seguridad, al menos en mi humilde opinión. Están relacionados con:

  1. Java es el COBOL del siglo XXI, por lo que hay una gran cantidad de código heredado que tendría que ser reescrito y eso lleva tiempo. Básicamente, las aplicaciones bancarias son aplicaciones antiguas, fueron construidas en Java hace unos diez años y nadie quiere tirar todo el código anterior (lo que BTW es casi siempre una mala decisión),
  2. algunas personas creen que un lenguaje estático está algo alterado "más seguro" que el lenguaje de tipado dinámico. Esto es, en mi humilde opinión, falso (por ejemplo, colecciones anteriores a Java 5).
4

Me parece que su conexión entre Java y la banca terminó mal.

La mayoría del software de banca tiene una seguridad terrible. Y mucho software bancario está escrito en Java.¿Significa que Java hace que sea más difícil escribir software seguro que otros lenguajes?

Probablemente no es culpa de Java que haya tan poca seguridad de calidad (y seguridad) en el software de banca. De hecho, como mencionan otros carteles, la elección de su idioma generalmente tiene muy pocas consecuencias para su seguridad, a menos que seleccione uno de los pocos idiomas donde solo los codificadores de hotshot pueden escribir código seguro (me vienen a la mente C y PHP).

Muchos grandes sitios de comercio electrónico están escritos en Python, Ruby y Perl usando varios marcos. Y yo diría que los requisitos de seguridad para los comerciantes son mucho más altos que los requisitos de la industria bancaria. Esto se debe a que los comerciantes deben proporcionar seguridad y una buena experiencia de usuario, mientras que los clientes bancarios están dispuestos a soportar interfaces inutilizables Tokens de SecureID y lo que sea.

Así que sí: Django está a la altura.

1

Puede crear una aplicación segura con Django de la misma manera que con cualquier marco Java popular. Una parte donde Java brilla es su extensa biblioteca criptográfica.

Para las tareas de cifrado mínimas requeridas por Django, los servicios de cifrado de Python son suficientes, sin embargo, la falta de cifrados de bloque hace que el mecanismo de cifrado en Django sea inseguro para los datos en reposo.

Python soporta de forma nativa algoritmos hash seguras para incluir SHA1, SHA224, SHA256, SHA384 y SHA512, sin embargo mecanismo de autenticación de Django tiene todavía que se actualiza para utilizar otra cosa que no sea SHA1, por lo que es potencialmente vulnerable al análisis criptográfico.

Cuestiones relacionadas