mar 21 2012

Propagación y herencia de permisos: la clase FileSystemAccessRule

JM AlarcónCategorías: Programación | Seguridad | Sistemas operativos
Propagación y herencia de permisos: la clase FileSystemAccessRule La información que ofrece en ocasiones MSDN sobre la plataforma .NET se puede decir, eufemísticamente, que "no es todo lo buena que debiera ser". Un buen ejemplo de ello es la documentación de la clase FileSystemAccessRule y más en concreto lo que se refiere a los indicadores sobre propagación y herencia de permisos en el acceso al sistema de archivos. Consideremos este ejemplo. Necesitas controlar desde tu aplicación el acceso a un carpeta llamada "docs" de forma que te asegures de que el usuario "DOMINIO\Usuario" tendrá acceso de lectura a la carpeta y todas sus subcarpetas (y las hijas de éstas), pero sin embargo no tendrá acceso a ninguno de los archivos contenidos en éstas. Dejemos de lado la utilidad exacta de esto. Lo que quiero es mostrar lo retorcidas que han puesto las opciones correspondientes en la plataforma .NET :-S El código en C# que necesitaríamos incluir es este: 1: DirectorySecurity dirSec = Directory.GetAccessControl(@&quo... [Más]

Tags: , ,

nov 8 2011

Proveedores universales de ASP.NET: Membership y Roles fuera de SQL Server

JM AlarcónCategorías: ASP.NET | Seguridad
Proveedores universales de ASP.NET: Membership y Roles fuera de SQL Server Como todo programador de ASP.NET sabe, la mayor parte de las API de esta plataforma de desarrollo web están basadas en el modelo de proveedores. Para explicarlo de manera rápida, básicamente esto significa que entre la funcionalidad que el programador utiliza y el almacenamiento relacionado con ésta, existe un elemento intermedio llamado "proveedor" que desacopla ambas partes. De esta manera, si queremos utilizar otro tipo de almacenamiento basta con cambiar el proveedor en la configuración y listo. no es necesario tocar el código en absoluto, por lo que resulta muy cómodo y útil. El siguiente esquema (sacado de MSDN) ilustra la arquitectura de este modelo: Como vemos muchos servicios como los de seguridad (Membership y Roles), la personalización (Profile) u otros como el almacenamiento de la sesión o los WebParts, están basados en este modelo, representados por las cajas de la parte superior. Así, la información de los usuarios, los roles, los perfiles, las sesiones, etc... [Más]

Tags: ,

oct 28 2011

Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación

JM AlarcónCategorías: ASP.NET | Seguridad
Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación Este pasado martes impartí una charla en el grupo de usuarios de ASP.NET de España (AUGES) titulada como este post: “Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación” El resumen de la misma es el siguiente: Programar es mucho más que la simple creación de aplicaciones que cumplen con la funcionalidad para la que fueron diseñadas. Existen otras muchas consideraciones que hacer y multitud de características tan importantes como la propia funcionalidad que se deben tener en cuenta: rendimiento, extensibilidad, facilidad de mantenimiento, etc... entre las que destaca especialmente la seguridad del código que se escribe. De poco o de nada sirve una aplicación que lleva a cabo su cometido principal pero que permite que casi cualquiera pueda acceder a la información que supuestamente protege o que, debido a la escritura de código descuidado, un competidor desleal impide su funcionamiento cuando más se necesita. Y no, no llega con tener... [Más]

Tags:

ago 18 2010

Evitar que se publiquen las descripciones de nuestros servicios Web

José Manuel AlarconCategorías: ASP.NET | Seguridad
Evitar que se publiquen las descripciones de nuestros servicios Web Si disponemos de un servicio Web en nuestro servidor que está destinado a ser utilizado por nuestras aplicaciones pero no queremos facilitar que otros programadores le puedan sacar partido: ¿para qué queremos dejar publicado su archivo de descripción WSDL? El WSDL (Web Services Description Language) describe cómo es un servicio Web: qué tipos usa, qué métodos expone, etc… y es lo que usan Visual Studio y otras herramientas para crear un proxy que nos permita usar un determinado servicio. Se puede visualizar para cualquier servicio de .NET añadiendo ?wsdl al final de su URL, por ejemplo: http://www.miservidor.com/Servicios/miServicio.asmx?wsdl Cuando añadimos una nueva referencia Web a nuestro proyecto, en el diálogo que aparece podemos inspeccionar el servicio gracias a su descripción WSDL: Sin ese WSDL no podríamos inspeccionarlo ni tampoco añadir la clase proxy correspondiente. Un proxy es una serie de clases .NET que actúan de intermediarias entre nuestro código y el servi... [Más]

Tags: ,

jul 11 2010

Cómo suplantar usuarios de tu aplicación para soporte

JM AlarcónCategorías: ASP.NET | Desarrollo Web | Seguridad
Cómo suplantar usuarios de tu aplicación para soporte Esta es una cuestión bastante habitual y es que es muy útil, siendo administrador de una aplicación, poder entrar como cualquier otro usuario para ver lo mismo que éste ve y poder hacer cosas en su nombre. Sobre todo a la hora de dar soporte técnico, poder atender mejor a los usuarios, ayudarles o detectar posibles problemas en sus cuentas. La idea es la de poder entrar haciéndonos pasar por otros usuarios, como si fuésemos ellos, pero sin conocer sus credenciales. El otro día un alumno de mi curso de Desarrollo Web con ASP.NET me preguntó  precisamente esto, por lo que me he decidido a grabar un vídeo práctico explicando como hacerlo. Como verás es muy fácil, pero interesante. Dejo el vídeo a continuación y te recomiendo que, antes, te leas este post que escribí hace tiempo sobre el funcionamiento de las cookies de autenticación. ¡Espero que te resulte &... [Más]

Tags: , ,

sep 24 2009

Baquia.com hackeado (o eso parece)

José Manuel AlarconCategorías: Seguridad
Baquia.com hackeado (o eso parece) Entre los Web Clips para mostrar en la barra superior de GMail, tengo añadidas las noticias de Baquia.com. Me parece una publicación on-line muy interesante y me acabé de aficionar definitivamente a ellos cuando tuve oportunidad de conocerlos en persona hace unos meses, que estuve en sus oficinas para entrevistarme para su televisión. Mparecieron muy profesionales y las noticias y artículos resultan casi siempre de interés. Hace un rato, leyendo mi cuenta de GMail, me he fijado en una cosa que por poco se me pasa inadvertida y es que una de las noticias de la barra de Web Clips era de Baquia pero se veía "rara": Bufff, parece un hacking clarísimo. Si pulsas en el enlace te lleva a una página que no existe ya: O sea, que los amigos de Baquia han andado rápidos por fortuna. Pero por rápido que seas, Google estos días parece que lo es mucho más: http://www.google.es/search?hl=es&source=hp&q=ozzmadark+site%3Abaquia.com si bien parece que, en e... [Más]

Tags:

jul 30 2009

El último fallo seguridad de IE se debía a un simple "&"

José Manuel AlarconCategorías: Programación | Seguridad
El último fallo seguridad de IE se debía a un simple Por si alguno no estaba convencido aún de la importancia de escribir código pensando en la seguridad que se lea este artículo sobr eel último fallo de seguridad de Internet Explorer: http://blogs.msdn.com/sdl/archive/2009/07/28/atl-ms09-035-and-the-sdl.aspx Y si el tema te interesa de verdad: ya sabes.   Foto por Gui Tavares, Flickr

Tags: ,

jun 27 2009

Oficina virtual de Correos.es: la odisea de usar una aplicación mal hecha

José Manuel AlarconCategorías: Mundo TIC | Seguridad
Oficina virtual de Correos.es: la odisea de usar una aplicación mal hecha Ya he hablado en otras ocasiones de aplicaciones Web de gran impacto y que están rematadamente mal hechas y sin pensar en el usuario. Ésta vez me toca hablar de la Oficina Virtual de Correos.es, el operador nacional de correo en España. Hace unos días tuve que enviar un Burofax y me dije: "Ya que esta gente tiene una oficina on-line que incluso ha llevado premios, vamos a hacerlo directamente por Internet, que será coser y cantar". ¡Qué error cometí!. El problema más grave fue sin duda el que se refiere a los pagos on-line. Resulta que estableces los parámetros del servicio que quieres utilizar y cuando ya lo tienes en el carrito de la compra te da la opción depagarlo on-line inmediatamente. Para ello debes introducir el número de tu tarjeta de crédito y, en teoría, se procesa el pago y el servicio queda listo para ser gestionado or un atento funcionario (perdón, ahora desde que no son monopolio del Estado son "personal laboral fijo",aunque algún funcionario queda). El problema es qu... [Más]

Tags: ,

may 30 2009

ASP.NET Membership: Cómo guardar datos adicionales de los usuarios

José Manuel AlarconCategorías: ASP.NET | Seguridad
ASP.NET Membership: Cómo guardar datos adicionales de los usuarios En los  últimos posts he estado hablando sobre la seguridad de ASP.NET basada en Forms. Esto ha traído algunas preguntas por parte de los visitantes. Una de ellas, bastante común, es la de cómo almacenar información adicional atada a los usuarios que hemos autenticado.La API de Membership que viene con ASP.NET, y en concreto el proveedor de Membership para trabajo contra SQL Server (SqlMembershipProvider) nos provee de los medios suficientes para almacenar la información básica sobre los usuarios, esto es, el nombre, su login y su clave, que es lo mínimo necesario para trabajar. En este gráfico puedes ver la estructura completa creada por ASP.NET (más bien por aspnet_regsql.exe) en nuestra base de datos para dar soporte a SqlMembershipProvider y relacionados.Obviamente casi siempre necesitaremos almacenar mucha más información sobre ellos, relacionándola de manera directa y sencilla para poder extraerla. Así, por ejemplo, podemos necesitar almacenar sus datos de contacto, infromac... [Más]

Tags: ,

may 24 2009

Seguridad Web: Las cookies de autenticación de ASP.NET y su seguridad

José Manuel AlarconCategorías: ASP.NET | Seguridad
Seguridad Web: Las cookies de autenticación de ASP.NET y su seguridad En mi anterior post hablaba sobre el funcionamiento de las cookies en los navegadores y de cómo podíamos usar una extensión estándar (HttpOnly) para intentar impedir que las cookies sean accesibles desde el lado cliente y sólo se puedan manejar desde el servidor. No obstante se trata de una medida que, de funcionar, complica un poco a los posibles piratas, pero no es una verdadera barrera de seguridad. Para empezar ni siquiera está soportada por todos los navegadores. Las cookies residen en el disco duro del usuario por lo que son fáciles de manipular por cualquiera. Además se envían al servidor en cada petición, por lo que cualquiera con un proxy estilo Fiddler puede leerlas y manipularlas antes de enviarlas al servidor. Es decir, las cookies son elementos realmente inseguros. A raíz de estas disquisiciones alguien me escribió preguntándome por la seguridad de la autenticación Forms de ASP.NET (la más habitual). Ésta se basa precisamente en la existencia de una cookie que identific... [Más]

Tags: ,