Artículo

logo-Symfony
En la mañana de hoy uno de nuestros clientes tenia preguntas respecto a la seguridad de un software, motivo que dio a esta entrada en nuestro blog.

Antes que nada, la seguridad de un software no es algo aislado ya que este no esta en una caja fuerte cerrada, debemos tener como premisa que en un sistema intervienen varios subsistemas y si la seguridad de un subsistema es débil o vulnerable podría comprometerse la información en el peor de los casos.

Todos hemos leido infinidad de articulos donde nos recomiendan no usar contraseñas facilmente deducibles, dar acceso a los servidores solo a los usuarios que asi lo requieran por niveles de atribuciones, mantenerse atento y actualizado en los ultimos parches de seguridad a nivel de sistemas operativos, bases de datos, servidores etc, acceso fisico a servidores solo a personal autorizado y en general todas las buenas practicas que estan en la norma ISO 27000, entre otras normas, en fin ¿pero como el desarrollo utilizando Symfony nos ayuda en esto? pregunta que espero dar respuesta en el proximo apartado.

Seguridad en Symfony y algunas recomendaciones

Pues bien, Symfony tiene una buena oferta de maneras como manejar la seguridad en tu aplicacion. para lo cual si trabajas con Symfony recomiendo que entiendas este capitulo del libro de Symfony o si lo prefieres en español aqui esta, como habras leido en los vínculos de referencia anteriores existen desde sencillos mecanismos de seguridad hasta complejos esquemas, normalmente en todo esquema de seguridad en Symfony interviene un Usuario que tiene un ROL, que quiere acceder a un recurso por medio de una Ruta, este a su vez debe cumplir todas las políticas que se tengan para que pueda acceder al recurso o no.

Symfony puede trabajar con varios proveedores de usuarios a la vez, como por ejemplo un servidor LDAP, usuarios de tu base de datos u otras plataformas de terceros como G+, Facebook, Twitter para todo esto encontraras bundles ya existentes que te daran una mano.

Recomiendo sobretodas las cosas tener claro que esquema de seguridad es el adecuado para el software que inicias a desarrollar, ten en cuentas las siguientes preguntas:

¿Que politicas de seguridad existen?
¿Aplica herencia de roles/permisos?
¿Sera una plataforma abierta a internet o es a nivel local?
¿Solo desde ciertas ubicaciones se podra acceder?
¿Las contraseñas deben tener algun nivel de complejidad?
¿Mis usuarios estan en una fuente externa como facebook?
¿Es necesario que quien cree el registro en la base de datos lo modifique el mismo?

Con Symfony dispones de un gran catalogo de opciones a nivel nativo con SecurityBundle como de bundles de terceros como lo puedes ver aqui.

Recomendación: Normalmente las integraciones de ACL + ACE aplican unicamente para soluciones de software robustas con administracion al detalle de quien mueve cada registro, cabe decir que esta es una de las mas sofisticadas y de las que mas trabajo llevan para configurar y mantener.


Un matrimonio comun en proyectos desarrollados con Symfony es FOSUserBundle + SonataAdminBundle, el primero se apoya en el bundle nativo para la administracion de usuarios y el segundo nos ayuda en parte a la creacion y gestion visual de usuarios.

Ataques CSRF

Los ataques CSRF resumiendo son peticiones externas que hacen a nuestro sitio web sin permiso, para esto Symfony tiene a nivel nativo una solucion la cual se centra en que a cada formulario le genera un token unico por response y cuando nos hacen el request por ejemplo para guardar datos, se valida que este token sea valido, si es valido se continua con el proceso.

Security SensioLabs

Esta herramienta de Sensiolabs nos ayuda a mantener nuestro proyecto al dia en temas de seguridad a nivel de bundles unicamente, si entras a https://security.sensiolabs.org/check te pedira que subas el archivo composer.lock de tu proyecto y validara que los bundles utilizados esten bien a nivel de seguridad, es decir que estos no tengan ninguna vulnerabilidad a la fecha, recomiendo que trates de utilizar bundles de fabricantes reconocidos en la comunidad como KNP, FOS, Sonata ya que estos tratan de manejar estandares altos.

hasta la próxima,

@apdi_

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *