• El análisis de HTML tiene reglas explícitas. No más depender o ser frustrado porpeculiaridades de implementación de un navegador. Las peculiaridades conducen a la ambigüedad que conduce ainseguridad. Instrucciones claras sobre el manejo de caracteres no válidos (como bytes NULL)o las etiquetas sin terminar reducen las posibilidades de que un navegador "corrija" el código HTMLpunto donde una vulnerabilidad de inyección de HTML se vuelve fácilmente explotable.• Las nuevas etiquetas y atributos significan la perdición de los filtros de seguridad que se basan en listas negras.Toda esa cuidadosa atención a cada etiqueta listada en la especificación HTML4 necesitapara ponerse al día con HTML5.• Una mayor complejidad implica una menor seguridad; es más difícil tomar la esquinacasos y situaciones patológicas que exponen vulnerabilidades.• Nuevas API para todo, desde elementos multimedia hasta conversión base64 yregistrar controladores de protocolos personalizados. Esto habla de la complejidad deimplementación que puede introducir errores en el navegador.En este capítulo y en otros a lo largo del libro se tratan temas específicos.

COMPARTIR RECURSOS DE ORIGEN CRUZADO (CORS)Algunas funciones de HTML5 reflejan las experiencias del mundo real de los desarrolladores web quehan estado ampliando los límites de las capacidades del navegador para crear aplicacionesfunciones que se ven, se sienten y funcionan no diferentes a las aplicaciones "nativas" instaladasen el sistema de un usuario. Uno de esos límites que se enfatizan es el venerable SamePolítica de origen, uno de los pocos mecanismos de seguridad presentes en los primeros navegadores.ers. Los desarrolladores a menudo tienen razones legítimas para querer relajar el mismo origenPolítica, ya sea para habilitar mejor un sitio distribuido en nombres de dominio específicos, o parahacen posible una interacción útil de sitios en dominios no relacionados. CORS habilita el sitioque los desarrolladores otorguen permiso para que un origen pueda acceder al contenido derecursos cargados desde un origen diferente. (El comportamiento predeterminado del navegador permite recursosde diferentes Orígenes para ser solicitados, pero el acceso a los contenidos de cada respuestaEl recurso está aislado por origen. Un sitio no puede echar un vistazo al DOM de otro, por ejemplo, establecercookies, leer nodos de texto que contienen nombres de usuario, inyectar nodos JavaScript, etc.)Uno de los caballos de batalla del navegador para producir solicitudes es XMLHttpRequest(XHR) objeto. El objeto XHR es un elemento recurrente a lo largo de este libro. Dos desus principales características, la capacidad de realizar solicitudes asincrónicas en segundo plano y lacapacidad para utilizar métodos que no son GET, lo convierten en un componente clave de los exploits. Como consecuenciaPor lo tanto, los navegadores han limitado cada vez más las capacidades de XHR para reducirsu exposición adversa a la seguridad. Con CORS, los desarrolladores web pueden ampliar esos límitessin poner en riesgo indebidamente a los navegadores.Los límites de seguridad de los recursos de origen cruzado se establecen mediante solicitud yencabezados de respuesta. El navegador tiene tres encabezados de solicitud (cubriremos la verificación previaconcepto después de introducir todos los encabezados):• Origen: el esquema / host / puerto del recurso que inicia la solicitud. Compartiendodebe ser otorgado a este Origen por el servidor. La seguridad asociada con esto El encabezado se basa en que proviene de un navegador no comprometido. Su valor espara ser configurado con precisión por el navegador; no debe ser modificado por HTML, JavaScript,o complementos.• Método de solicitud de control de acceso: se utiliza en una solicitud de verificación previa para determinarsi el servidor respeta los métodos que el objeto XHR desea utilizar. porPor ejemplo, es posible que un navegador solo necesite depender de GET para una aplicación web,pero requieren una variedad de métodos para un sitio web REST-ful. Por tanto, un sitio web puedehacer cumplir un concepto de "privilegios mínimos" en el navegador por el cual solo respetaaquellos métodos que considere necesarios.• Encabezados de solicitud de control de acceso: se utilizan en una solicitud de verificación previa para determinarsi el servidor respetará los encabezados adicionales que el objeto XHR desea establecer.Por ejemplo, JavaScript del lado del cliente tiene prohibido manipular el origenheader (o cualquier Sec-header en la próxima sección de WebSockets). En el otroPor otro lado, el objeto XHR puede querer cargar archivos a través de un método POST, en el quecaso, puede ser deseable establecer un encabezado de tipo de contenido (aunque los navegadoreslimitar los valores que puede contener este encabezado).El servidor tiene cinco encabezados de respuesta que le indican al navegador qué permitir encondiciones para compartir el acceso a los datos de una respuesta a una solicitud de origen cruzado:• Access-Control-Allow-Credentials: puede ser "verdadero" o "falso". Por defecto,el navegador no enviará cookies, autenticación HTTP (p. ej., Basic, Digest,NTLM) o certificados SSL de cliente en todos los orígenes. Esta restricciónevita que contenido malintencionado intente filtrar las credenciales a unorigen no aprobado. Establecer este encabezado en verdadero permite cualquier dato en esta credencialcategoría que se compartirá entre los orígenes.• Access-Control-Allow-Headers: los encabezados que puede incluir una solicitud. Ahíson encabezados inmutables, como Host y Origin. Esto se aplica a encabezados comoTipo de contenido y encabezados X personalizados.• Access-Control-Allow-Methods: los métodos que una solicitud puede utilizar para obtenerel recurso. Prefiera siempre limitar los métodos solo a los que se consideren necesarios,que normalmente es OBTENER.• Access-Control-Allow-Origin: el (los) origen (s) con los que el servidor permiteel navegador para compartir los datos de respuesta del servidor. Este puede ser un origen explícito(p. ej., http://other.site ), * (p. ej., un comodín para que coincida con cualquier origen, o "nulo" (para negarpeticiones). El comodín ( * ) siempre evita que las credenciales se incluyancon una solicitud de origen cruzado, independientemente del control de acceso mencionado anteriormenteEncabezado Allow-Credentials.• Access-Control-Expose-Headers: una lista de encabezados que el navegador puedehacer visible al cliente. Por ejemplo, JavaScript podría leerencabezados expuestos de una respuesta XHR.• Access-Control-Max-Age: la duración en segundos de una solicitud de verificaion previa esta es una desicion de politica para desarrolladores web un bien referencia para este valor seria la cantidad de timepo de la aplicacion web mantiene la sesion de un usuario sin requerir una nueva auntenticacion al igual que un boton "recordarme" comun 

Vous avez atteint le dernier des chapitres publiés.

⏰ Dernière mise à jour : Sep 29, 2020 ⏰

Ajoutez cette histoire à votre Bibliothèque pour être informé des nouveaux chapitres !

Hackear aplicaciones webOù les histoires vivent. Découvrez maintenant