Preguntas frecuentes sobre seguridad en aplicaciones Web (OWASP FAQ)

editado agosto 2008 en Seguridad Web
Un saludo...

Preguntas Frecuentes sobre seguridad en aplicaciones Web (OWASP FAQ)

Esta lista de preguntas frecuentes da respuesta a algunas de las cuestiones que los desarrolladores suelen realizarse acerca de la seguridad en aplicaciones Web. Esta lista no es especifica para una plataforma o lenguaje en particular, discute los problemas y soluciones que son aplicables a cualquier plataforma.

A la hora de desarrollar una aplicación, generalmente nos centramos más en la funcionalidad que en la seguridad. Los atacantes se aprovechan de ello explotando la aplicación de diferentes maneras. Las amenazas más comunes en las aplicaciones Web son la inyección de código SQL, el ejecución inter-sitio (Cross Site Scripting), la manipulación de variables y la explotación de funcionalidad importante como el recordatorio de contraseñas, etcétera. Se han creado secciones separadas en esta lista para cada una de estas amenazas.

El contenido es muy amplio y enriquecedor pues como su nombre lo indica ofrece rápidas respuestas a preguntas frecuentes relacionadas con la seguridad de aplicativos Web, he aquí su contenido:

SOBRE INICIO DE SESIÓN (LOGIN)
¿Qué aspectos debo recordar a la hora de diseñar las páginas de inicio de sesión (login)?
¿Es realmente necesario redirigir al usuario a una nueva página después del inicio de sesión?
¿Cómo funciona la técnica MD5 con sal (salted-MD5)
¿Como puede ser explotada mi función de recordatorio de contraseña?
En la función de recordar contraseña, ¿Es mejor mostrar la contraseña o permitir al usuario reestablecerla?
¿Existe riesgo en enviar la nueva contraseña al correo electrónico autorizado por el usuario?
¿Cuál es la mejor forma de diseñar la función de recordatorio de contraseñas?
¿Cómo me protejo ante ataques automatizados para adivinar contraseñas? ¿Debo simplemente bloquear el usuario después de 5 intentos fallidos?
¿Y si el atacante a plantado un registrador de tecleos (Keystroke logger) en la computadora cliente? ¿Puedo contrarestar esto?
Mi sitio podrá usarse desde máquinas compartidas públicamente como en bibliotecas. ¿Qué precauciones debo tomar?

INYECCIÓN DE SQL
¿Qué es la inyección de SQL?
Además del usuario y contraseña, ¿qué otras variables son candidatas para la inyección de SQL en nuestras aplicaciones?
¿Cómo evitamos ataques de inyección de SQL?
Estoy usando validación de la entrada mediante JavaScripts de Cliente, ¿no es esto suficiente?
Estoy usando procedimientos almacenados para la autenticación, ¿soy vulnerable?
¿Los Servlets de Java son vulnerables a la inyección de SQL?

MANIPULACIÓN DE VARIABLES
¿Por qué no puedo fiarme de lo que proviene del navegador?
¿Qué información puede ser manipulada por un atacante?
¿Cómo manipulan los atacantes la información? ¿Qué herramientas usan?
Estoy usando SSL, ¿pueden los atacantes modificar la información?
¿Hay alguna forma de evitar que este tipo de herramienta proxy modifiquen los datos enviados a la aplicación?

MEMORIA RÁPIDA (CACHE) DEL NAVEGADOR
¿Cómo puede usarse la memoria rápida (cache) del navegador para realizar ataques?
¿Cómo puede asegurarme de que las páginas con información sensible no se guardan en memoria rápida?
¿Qué diferencia hay entre las directivas de control de memoria rápida “no-cache” y “no-store”?
¿Estoy totalmente seguro con estas directivas?
¿Dónde puedo encontrar más información sobre caching?

EJECUCIÓN INTER-SITIO (CROSS SITE SCRIPTING O XSS)
¿Qué es el XSS?
¿Qué información puede robar un atacante mediante XSS?
Aparte de las enlaces a páginas de error enviadas por correo electrónico, ¿hay otros métodos para realizar ataques de XSS?
¿Cómo puedo evitar ataques XSS?
¿Me puedo proteger de ataques XSS sin modificar el código de la aplicación?
¿Qué es el rastreo inter-sitio (Cross Site Tracing ó XST)?¿Cómo puedo evitarlo?

IDENTIFICACIÓN DEL SERVIDOR WEB
¿Cómo identifican los atacantes qué servidor Web estoy usando?
¿Cómo puedo falsificar los banners o rescribir las cabeceras desde mi servidor Web?
Una vez falsificado el banner,¿puede mi servidor Web ser identificado?
Un amigo me ha contado que es más seguro hacer correr mi servidor bajo un puerto no estándar, como 5001. ¿Es esto verdad?
¿Debe realmente preocuparme que se identifique mi servidor Web?

PRUEBAS (TESTING)
Quiero encadenar un software de tipo proxy con mi servidor proxy, ¿existen herramientas que permitan hacerlo?
¿No pueden ser automatizadas las pruebas? ¿Existen herramientas que pueda correr contra mi aplicación?
¿Dónde puedo realizar mis pruebas? ¿Existe una aplicación Web con la que pueda practicar?
¿Existen herramientas para el revisión de código fuente que permitan predecir vulnerabilidades para lenguajes como .NET, java, php, etc?
¿Pueden otros protocolos diferentes de HTTP ser interceptados y usados para realizar ataques?

GESTIÓN DE GALLETAS(COOKIES) Y SESIONES
Qué son las galletas seguras?
¿Puede otro sitio Web robar las galletas que mi sitio Web almacena en la máquina de un usuario?
¿Existe algún riesgo en usar galletas persistentes frente a galletas no persistentes?
Si uso un identificador de sesión calculado en función de la IP del cliente, ¿estoy protegido contra el robo de la sesión?
¿Cuál es el mejor método para transmitir identificadores de sesión: en galletas, en la URL o en variables ocultas?
¿Es útil cifrar las galletas que guardan el identificador de sesión y enviarlas al servidor?
¿En qué se basa el concepto de usar un identificador (ID) de página además del identificador de sesión?

REGISTROS (LOGS) Y AUDITORIA
¿Qué son los registros W3C?
¿Necesito mantener un registro en mi aplicación a pesar de tener activados los registros W3C?
¿Qué debo registrar en el registros de mi aplicación?
¿Debo cifrar mis registros? ¿No afecta esto al rendimiento?
¿Puedo fiarme de las direcciones IP registradas en mi registro? ¿Puede un usuario personificas o falsificar su dirección IP?

CRIPTOGRAFÍA/SSL
¿Debería usar SSL de 40 o de 128 bits?
¿Realmente SSL de 40 bits es inseguro?
Tengo que usar SSL de 40 bits, ¿Como puedo asegurarme que estoy protegido adecuadamente?
¿Qué se cifra cuando uso SSL? ¿La petición de páginas también se cifra?
¿Qué algoritmos de cifrado usa SSL?
Quiero usar SSL, ¿Por dónde debo empezar? O ¿Cómo compro un certificado SSL?

VARIOS
¿Qué son los cortafuegos de aplicación? ¿Qué tan buenos son en realidad?
¿En qué consisten los registros referrer (referrer logs) y las URLs sensibles?
¿Quiero usar el lenguaje más seguro?¿Cuál es más recomendable?

Descargar documento: Preguntas frecuentes sobre seguridad en aplicaciones Web (OWASP FAQ)

Contraseña del archivo: www.dragonjar.org

Comentarios

  • editado 2:02
    muy buen aporte gracias
  • editado 2:02
    Buen material Gracias
  • editado 2:02
    Soy nuevo por acá, pero igualmente gracias por el documento.
  • editado 2:02
    Yo también soy nuevo en la comunidad, gracias por compartir!!
  • editado 2:02
    Buenas tardes,

    Esta guia ya va en la version 4 en ingles que esta proxima a salir... mientras aca les dejo el link de descarga mediante una busqueda por google de la version 3.0 en español de esta guia muy util!
Accede o Regístrate para comentar.