Se publica una guía de referencia para facilitar el desarrollo de
aplicaciones web teniendo en cuenta, desde el mismo momento en que se
realiza el diseño de las mismas.
En los últimos meses estamos asistiendo a un considerable movimiento
alrededor de las aplicaciones y los servicios web. Casi todos los
fabricantes de software están orientando sus plataformas de desarrollo
de aplicaciones para que se integren y utilicen las posibilidades de la
web.
Entendemos por aplicaciones web a todo aquél software que interacciona
con el usuario utilizando el protocolo HTTP. Por su parte, los servicios
web son un conjunto de funciones empaquetadas dentro de una entidad
única y publicadas dentro de la red para que puedan ser utilizadas por
las aplicaciones web.
Normas básicas de seguridad
El proyecto OWASP (Open Web Application Security Project) tiene como
objetivo ofrecer una metodología, de libre acceso y utilización, que
pueda ser utilizada como material de referencia por parte de los
arquitectos de software, desarrolladores, fabricantes y profesionales
de la seguridad involucrados en el diseño, desarrollo, despliegue y
verificación de la seguridad de las aplicaciones y servicios web.
La guía empieza estableciendo los principios básicos de seguridad que
cualquier aplicación o servicio web debe cumplir:
* Validación de la entrada y salida de información
La entrada y salida de información es el principal mecanismo que dispone
un atacante para enviar o recibir código malicioso contra el sistema.
Por tanto, siempre debe verificarse que cualquier dato entrante o
saliente es apropiado y en el formato que se espera. Las características
de estos datos deben estar predefinidas y debe verificarse en todas las
ocasiones.
* Diseños simples
Los mecanismos de seguridad deben diseñarse para que sean los más
sencillos posibles, huyendo de sofisticaciones que compliquen
excesivamente la vida a los usuarios. Si los pasos necesarios para
proteger de forma adecuada una función o modulo son muy complejos, la
probabilidad de que estos pasos no se ejecuten de forma adecuada es muy
elevada.
* Utilización y reutilización de componentes de confianza
Debe evitarse reinventar la rueda constantemente. Por tanto, cuando
exista un componente que resuelva un problema de forma correcta, lo más
inteligente es utilizarlo.
* Defensa en profundidad
Nunca confiar en que un componente realizará su función de forma
permanente y ante cualquier situación. Hemos de disponer de los
mecanismos de seguridad suficientes para que cuando un componente del
sistema fallen ante un determinado evento, otros sean capaces de
detectarlo.
* Tan seguros como en eslabón más débil
La frase «garantizamos la seguridad, ya que se utiliza SSL» es realmente
muy popular, pero también es muy inexacta. La utilización de SSL
garantiza que el tráfico en tránsito entre el servidor y el cliente se
encuentra cifrado, pero no garantiza nada acerca de los mecanismos de
seguridad existentes.
Por tanto, no debemos fiarnos únicamente de los mecanismos de seguridad
«exteriores», sino que es preciso identificar cuales son los puntos
precisos en los que deben establecerse las medidas de seguridad. Si
nosotros no hacemos este trabajo, seguro que los atacantes si lo harán.
* La «seguridad gracias al desconocimiento» no funciona
El simple hecho de ocultar algo no impide que, a medio o largo plazo,
llegue a ser descubierto. Tampoco es ninguna garantía de que tampoco
será descubierto a corto plazo.
* Verificación de privilegios.
Los sistemas deben diseñarse para que funcionen con los menos
privilegios posibles. Igualmente, es importante que los procesos
únicamente dispongan de los privilegios necesarios para desarrollar su
función, de forma que queden compartimentados.
* Ofrecer la mínima información
Ante una situación de error o una validación negativa, los mecanismos de
seguridad deben diseñarse para que faciliten la mínima información
posible. De la misma forma, estos mecanismos deben estar diseñados para
que una vez denegada una operación, cualquier operación posterior sea
igualmente denegada.
Otros aspectos tratados en la guía son: consideraciones de arquitectura,
mecanismos de autenticación, gestión de sesiones de usuario, control de
acceso, registro de actividad, prevención de problemas comunes,
consideraciones de privacidad y criptografía.
xavi@hispasec.com
Esta guia es excelente.
Y es que, cuando se trata de desarrollo web a medida, necesitamos seguir ciertos protocolos de seguridad, es importante seguirlos y por eso este post es tan bueno.
saludos!