El cross-site scripting ( XSS ) [ a ] es un tipo de vulnerabilidad de seguridad que se puede encontrar en algunas aplicaciones web . Los ataques XSS permiten a los atacantes inyectar scripts del lado del cliente en páginas web vistas por otros usuarios. Una vulnerabilidad de cross-site scripting puede ser utilizada por los atacantes para eludir controles de acceso como la política del mismo origen . Los efectos de XSS varían desde una molestia menor hasta un riesgo de seguridad significativo, dependiendo de la sensibilidad de los datos manejados por el sitio vulnerable y la naturaleza de cualquier mitigación de seguridad implementada por la red propietaria del sitio . [ 1 ]
OWASP considera que el término cross-site scripting es un nombre inapropiado . Inicialmente era un ataque que se utilizaba para vulnerar datos entre sitios, pero gradualmente comenzó a incluir otras formas de ataques de inyección de datos. [ 2 ]
Fondo
La seguridad en la web depende de diversos mecanismos, incluido un concepto subyacente de confianza conocido como política del mismo origen . Esta política establece que si el contenido de un sitio (como https://mybank.example1.com ) tiene permiso para acceder a recursos (como cookies, etc.) en un navegador web, entonces el contenido de cualquier URL con el mismo (1) esquema URI (por ejemplo , ftp, http o https), (2) nombre de host y (3) número de puerto compartirá estos permisos. El contenido de URL donde alguno de estos tres atributos sea diferente deberá obtener permisos por separado. [ 3 ]
Los ataques de secuencias de comandos entre sitios (XSS) utilizan vulnerabilidades conocidas en aplicaciones web , sus servidores o los sistemas de complementos de los que dependen. Al explotar una de estas vulnerabilidades, los atacantes insertan contenido malicioso en el contenido que se entrega desde el sitio comprometido. Cuando el contenido combinado resultante llega al navegador web del cliente, se ha entregado completamente desde la fuente de confianza y, por lo tanto, opera bajo los permisos otorgados a ese sistema. Al encontrar formas de inyectar scripts maliciosos en las páginas web, un atacante puede obtener privilegios de acceso elevados al contenido confidencial de la página, a las cookies de sesión y a diversa información que el navegador mantiene en nombre del usuario. Los ataques de secuencias de comandos entre sitios son un caso de inyección de código .
Los ingenieros de seguridad de Microsoft introdujeron el término "cross-site scripting" en enero de 2000. [ 4 ] La expresión "cross-site scripting" se refería originalmente al acto de cargar la aplicación web de terceros atacada desde un sitio de ataque no relacionado, de manera que se ejecutara un fragmento de JavaScript preparado por el atacante en el contexto de seguridad del dominio objetivo (aprovechando una vulnerabilidad XSS reflejada o no persistente ). La definición se amplió gradualmente para abarcar otros modos de inyección de código, incluidos vectores persistentes y que no son JavaScript (incluidos ActiveX , Java , VBScript , Flash o incluso scripts HTML ), lo que causó cierta confusión a los recién llegados al campo de la seguridad de la información . [ 5 ]
Las vulnerabilidades XSS se han reportado y explotado desde la década de 1990. Entre los sitios web afectados en el pasado se encuentran las redes sociales Twitter [ 1 ] y Facebook [ 6 ] . Desde entonces, las vulnerabilidades de secuencias de comandos entre sitios (XSS) han superado a los desbordamientos de búfer , convirtiéndose en la vulnerabilidad de seguridad más común reportada públicamente [ 7 ] , y algunos investigadores estimaron en 2007 que hasta el 68% de los sitios web probablemente son vulnerables a ataques XSS [ 8 ] .
Tipos
No existe una clasificación única y estandarizada de las vulnerabilidades de secuencias de comandos entre sitios (XSS), pero la mayoría de los expertos distinguen al menos dos tipos principales: no persistentes y persistentes . Algunas fuentes subdividen estos dos grupos en tradicionales (causadas por fallos en el código del servidor) y basadas en el DOM (en el código del cliente).
No persistente (reflejado)
La vulnerabilidad de secuencias de comandos entre sitios no persistentes (o reflejadas ) es, con mucho, el tipo más básico de vulnerabilidad web. [ 9 ] Estas vulnerabilidades aparecen cuando los datos proporcionados por un cliente web, [ 10 ] generalmente en parámetros de consulta HTTP (por ejemplo, el envío de un formulario HTML), son utilizados inmediatamente por scripts del lado del servidor para analizar y mostrar una página de resultados para ese usuario, sin sanitizar adecuadamente el contenido. [ 11 ]
Debido a que los documentos HTML tienen una estructura plana y serial que mezcla instrucciones de control, formato y el contenido real, cualquier dato no validado proporcionado por el usuario que se incluya en la página resultante sin la codificación HTML adecuada puede provocar la inyección de marcado. [ 9 ] [ 11 ] Un ejemplo clásico de un vector potencial es un motor de búsqueda de un sitio web: si se busca una cadena, esta se mostrará normalmente tal cual en la página de resultados para indicar lo que se buscó. Si esta respuesta no escapa o rechaza correctamente los caracteres de control HTML, se producirá una vulnerabilidad de secuencias de comandos entre sitios (XSS). [ 12 ]
Un ataque de redirección se suele realizar por correo electrónico o a través de un sitio web neutral. El señuelo es una URL aparentemente inofensiva que apunta a un sitio de confianza, pero que contiene el vector XSS. Si el sitio de confianza es vulnerable al vector, al hacer clic en el enlace, el navegador de la víctima puede ejecutar el script inyectado.
Persistente (o almacenado)
La vulnerabilidad XSS persistente (o almacenada ) es una variante más devastadora de una vulnerabilidad de secuencias de comandos entre sitios: ocurre cuando el servidor guarda los datos proporcionados por el atacante y luego los muestra permanentemente en páginas "normales" que otros usuarios ven durante su navegación habitual, sin el escape HTML adecuado. Un ejemplo clásico de esto son los foros en línea donde los usuarios pueden publicar mensajes con formato HTML para que otros usuarios los lean. [ 11 ]
Por ejemplo, supongamos que existe un sitio web de citas donde los miembros revisan los perfiles de otros miembros para ver si les resultan interesantes. Por motivos de privacidad, este sitio oculta el nombre real y el correo electrónico de todos. Estos datos se mantienen en secreto en el servidor. El nombre real y el correo electrónico de un miembro solo se muestran en el navegador cuando ha iniciado sesión , y no puede ver los de nadie más.
Supongamos que Mallory, una atacante, se une al sitio y quiere averiguar los nombres reales de las personas que ve en él. Para ello, escribe un script diseñado para ejecutarse desde los navegadores de otros usuarios cuando visitan su perfil . El script envía un breve mensaje a su propio servidor, que recopila esta información.
Para ello, a la pregunta "¿Describe tu primera cita ideal?", Mallory da una respuesta breve (para parecer normal), pero el texto al final de su respuesta es su script para robar nombres y correos electrónicos. Si el script está dentro de un <script>elemento, no se mostrará en la pantalla. Supongamos entonces que Bob, un miembro del sitio de citas, accede al perfil de Mallory, que contiene su respuesta a la pregunta de la primera cita. Su script se ejecuta automáticamente por el navegador y roba una copia del nombre real y el correo electrónico de Bob directamente desde su ordenador.
Las vulnerabilidades XSS persistentes pueden ser más significativas que otros tipos porque el script malicioso del atacante se ejecuta automáticamente, sin necesidad de atacar individualmente a las víctimas ni atraerlas a un sitio web de terceros. En particular, en el caso de las redes sociales, el código estaría diseñado para autopropagarse entre cuentas, creando un tipo de gusano del lado del cliente . [ 13 ]
Los métodos de inyección pueden variar enormemente; en algunos casos, el atacante ni siquiera necesita interactuar directamente con la funcionalidad web para explotar una vulnerabilidad. Cualquier dato recibido por la aplicación web (a través de correo electrónico, registros del sistema, mensajería instantánea, etc.) que pueda ser controlado por un atacante podría convertirse en un vector de inyección.
Vulnerabilidades del lado del servidor frente a vulnerabilidades basadas en el DOM
Las vulnerabilidades XSS se descubrieron originalmente en aplicaciones que procesaban todos los datos en el servidor. Los datos introducidos por el usuario (incluido un vector XSS) se enviaban al servidor y luego se devolvían al usuario como una página web. La necesidad de mejorar la experiencia del usuario impulsó la popularidad de aplicaciones cuya lógica de presentación (quizás escrita en JavaScript ) se ejecutaba principalmente en el lado del cliente y obtenía los datos del servidor bajo demanda mediante AJAX .
Dado que el código JavaScript también procesaba la entrada del usuario y la mostraba en el contenido de la página web, comenzó a aparecer una nueva subclase de ataques XSS reflejados, denominada secuencias de comandos entre sitios basadas en DOM . En un ataque XSS basado en DOM, los datos maliciosos no llegan al servidor web, sino que se reflejan mediante el código JavaScript, completamente en el lado del cliente. [ 14 ]
Un ejemplo de vulnerabilidad XSS basada en DOM es el error encontrado en 2011 en varios complementos de jQuery . [ 15 ] Las estrategias de prevención para ataques XSS basados en DOM incluyen medidas muy similares a las estrategias tradicionales de prevención de XSS, pero implementadas en código JavaScript y contenidas en páginas web (es decir, validación de entrada y escape). [ 16 ] Algunos frameworks de JavaScript tienen contramedidas integradas contra este y otros tipos de ataque , por ejemplo AngularJS . [ 17 ]
XSS autoinfligido
Self-XSS es una forma de vulnerabilidad XSS que se basa en la ingeniería social para engañar a la víctima y lograr que ejecute código JavaScript malicioso en su navegador. Si bien técnicamente no es una verdadera vulnerabilidad XSS, ya que se basa en la ingeniería social para que el usuario ejecute código en lugar de una falla en el sitio web afectado que permita al atacante hacerlo, aún presenta los mismos riesgos que una vulnerabilidad XSS regular si se ejecuta correctamente. [ 18 ]
XSS mutado (mXSS)
El XSS mutado ocurre cuando el atacante inyecta algo que parece seguro, pero que el navegador reescribe y modifica al analizar el marcado. Esto hace que sea extremadamente difícil de detectar o sanear dentro de la lógica de la aplicación del sitio web. Un ejemplo es el reequilibrio de comillas sin cerrar o incluso la adición de comillas a valores sin comillas en las propiedades CSS font-family. [ 19 ]
Medidas preventivas
Codificación/escapado de salida contextual de entrada de cadena
Existen varios esquemas de escape que se pueden utilizar según la ubicación de la cadena no confiable dentro de un documento HTML, incluyendo la codificación de entidades HTML, el escape de JavaScript, el escape de CSS y la codificación URL (o porcentual) . [ 20 ] La mayoría de las aplicaciones web que no necesitan aceptar datos enriquecidos pueden usar el escape para eliminar en gran medida el riesgo de ataques XSS de una manera bastante sencilla.
Realizar la codificación de entidades HTML solo en los cinco caracteres significativos de XML no siempre es suficiente para prevenir muchas formas de ataques XSS; las bibliotecas de codificación de seguridad suelen ser más fáciles de usar. [ 20 ]
Algunos sistemas de plantillas web entienden la estructura del HTML que producen y seleccionan automáticamente un codificador apropiado. [ 21 ] [ 22 ]
Validación segura de entradas HTML no confiables
Muchos operadores de aplicaciones web específicas (por ejemplo, foros y correo web) permiten a los usuarios utilizar marcado HTML. Al aceptar entrada HTML de los usuarios (por ejemplo, ), la codificación de salida (como ) no será suficiente, ya que la entrada del usuario debe ser renderizada como HTML por el navegador (para que se muestre como , en lugar de ). Detener un ataque XSS al aceptar entrada HTML de los usuarios es mucho más complejo en esta situación. A menudo, la entrada HTML no confiable debe pasar por un motor de saneamiento de HTML para garantizar que no contenga código JavaScript potencialmente malicioso.<b>very</b> large<b>very</b> largevery large<b>very</b> large
Por ejemplo, si un usuario ingresa
< span style = "color : blue; " > Hola mundo </span> <script> alert ( " XSS " ) </script>Entonces, la aplicación que procesa el marcado puede permitirlo, pero escapar el script cuando se muestra la entrada:<span>
< span style = "color: blue;" > Hola mundo </ span > < script > alert( " XSS " ) < /script >Muchas validaciones se basan en analizar (incluir en la lista negra) etiquetas HTML específicas "en riesgo", como la etiqueta <p> , <div> y <div>, o en permitir solo ciertas etiquetas y eliminar o escapar otras.<iframe><link><script>
Este enfoque presenta varios problemas; por ejemplo, a veces se omiten etiquetas aparentemente inofensivas que, incluso utilizándose correctamente, pueden dar lugar a una vulnerabilidad XSS.
Otro método popular es eliminar la entrada del usuario de " y ', sin embargo, esto también se puede eludir ya que la carga útil se puede ocultar con ofuscación .
Seguridad de las cookies
Además del filtrado de contenido, también se utilizan comúnmente otros métodos imperfectos para mitigar el cross-site scripting. Un ejemplo es el uso de controles de seguridad adicionales al manejar la autenticación de usuarios basada en cookies . Muchas aplicaciones web dependen de las cookies de sesión para la autenticación entre solicitudes HTTP individuales, y dado que los scripts del lado del cliente generalmente tienen acceso a estas cookies, los exploits XSS simples pueden robarlas. [ 23 ] Para mitigar esta amenaza en particular (aunque no el problema XSS en general), muchas aplicaciones web vinculan las cookies de sesión a la dirección IP del usuario que inició sesión originalmente, y luego solo permiten que esa IP use esa cookie. [ 24 ] Esto es efectivo en la mayoría de las situaciones (si un atacante solo busca la cookie), pero obviamente falla en situaciones en las que un atacante está detrás de la misma dirección IP NAT o proxy web que la víctima, o la víctima está cambiando su IP móvil . [ 24 ]
Cookie solo HTTP
Otra medida de mitigación presente en Internet Explorer (desde la versión 6), Firefox (desde la versión 2.0.0.5), Safari (desde la versión 4), Opera (desde la versión 9.5) y Google Chrome , es una bandera HttpOnly que permite a un servidor web establecer una cookie que no está disponible para los scripts del lado del cliente. Si bien es beneficiosa, esta función no puede prevenir por completo el robo de cookies ni los ataques dentro del navegador. [ 25 ]
Deshabilitar scripts
Si bien los desarrolladores de Web 2.0 y Ajax requieren el uso de JavaScript, [ 26 ] algunas aplicaciones web están escritas para permitir su funcionamiento sin necesidad de scripts del lado del cliente. [ 27 ] Esto permite a los usuarios, si así lo desean, deshabilitar los scripts en sus navegadores antes de usar la aplicación. De esta manera, incluso los scripts del lado del cliente potencialmente maliciosos podrían insertarse sin escape en una página, y los usuarios no serían vulnerables a ataques XSS.
Algunos navegadores o complementos de navegador se pueden configurar para deshabilitar los scripts del lado del cliente por dominio. Este enfoque tiene un valor limitado si se permite el uso de scripts por defecto, ya que bloquea los sitios maliciosos solo después de que el usuario sabe que son maliciosos, lo cual es demasiado tarde. Una funcionalidad que bloquea todos los scripts e inclusiones externas por defecto y luego permite al usuario habilitarlos por dominio es más efectiva. Esto ha sido posible durante mucho tiempo en Internet Explorer (desde la versión 4) mediante la configuración de sus llamadas "Zonas de seguridad" [ 28 ] y en Opera (desde la versión 9) mediante sus "Preferencias específicas del sitio" [ 29 ] . Una solución para Firefox y otros navegadores basados en Gecko es el complemento de código abierto NoScript que, además de la capacidad de habilitar scripts por dominio, proporciona cierta protección XSS incluso cuando los scripts están habilitados [ 30 ] .
El problema más significativo de bloquear todos los scripts en todos los sitios web por defecto es la reducción sustancial de la funcionalidad y la capacidad de respuesta (la programación del lado del cliente puede ser mucho más rápida que la programación del lado del servidor porque no necesita conectarse a un servidor remoto y la página o el marco no necesitan recargarse). [ 31 ] Otro problema con el bloqueo de scripts es que muchos usuarios no lo entienden y no saben cómo proteger adecuadamente sus navegadores. Otra desventaja es que muchos sitios no funcionan sin programación del lado del cliente, lo que obliga a los usuarios a deshabilitar la protección para ese sitio y expone sus sistemas a vulnerabilidades. [ 32 ] La extensión Firefox NoScript permite a los usuarios permitir scripts selectivamente de una página determinada mientras que deniega otros en la misma página. Por ejemplo, se podrían permitir los scripts de example.com, mientras que los scripts de advertisingagency.com que intentan ejecutarse en la misma página podrían denegarse. [ 33 ]
Tecnologías defensivas emergentes
Los tipos de confianza [ 34 ] modifican las API web para comprobar que los valores se hayan registrado como de confianza. Mientras los programas solo registren como de confianza valores, un atacante que controle un valor de cadena de JavaScript no podrá provocar XSS. Los tipos de confianza están diseñados para que los equipos azules puedan auditarlos .
Otro enfoque de defensa consiste en utilizar herramientas automatizadas que eliminen el código malicioso XSS de las páginas web. Estas herramientas utilizan análisis estático y/o métodos de coincidencia de patrones para identificar códigos potencialmente maliciosos y protegerlos mediante métodos como el escape. [ 35 ]
Parámetro de cookie SameSite
Cuando se establece una cookie con el SameSite=Strictparámetro, se elimina de todas las solicitudes de origen cruzado. Cuando se establece con SameSite=Lax, se elimina de todas las solicitudes de origen cruzado no "seguras" (es decir, solicitudes distintas de GET, OPTIONS y TRACE que tienen semántica de solo lectura). [ 36 ] La función está implementada en Google Chrome desde la versión 63 y en Firefox desde la versión 60. [ 37 ]
Incidentes notables
Véase también
- Seguridad de las aplicaciones web
- Seguridad en Internet
- Entidad externa XML
- Seguridad del navegador
- Metasploit Project , una herramienta de pruebas de penetración de código abierto que incluye pruebas para XSS.
- w3af , un escáner de seguridad de aplicaciones web de código abierto
- DOMPurify, una biblioteca de código abierto y gratuita creada por Cure53 para reducir la susceptibilidad a las vulnerabilidades XSS en los sitios web.
- Mensajería entre documentos
- Samy (gusano informático)
- Validación de parámetros
Notas a pie de página
- ↑ La abreviatura 'XSS' se usa comúnmente para evitar confusiones con las hojas de estilo en cascada .
Referencias
- 1 2 Arthur, Charles (21 de septiembre de 2010). "Usuarios de Twitter, incluida Sarah Brown, víctimas de un ataque informático malicioso" . The Guardian . Consultado el 21 de septiembre de 2010 .
- ↑ "Prevención de secuencias de comandos entre sitios - Serie de guías rápidas de OWASP" . OWASP . Consultado el 19 de marzo de 2003 .
- ↑ "Política del mismo origen - Seguridad web. W3.org" . Consultado el 4 de noviembre de 2014 .
- ↑ "dross" en MSDN (15 de diciembre de 2009). "¡Feliz décimo cumpleaños, Cross-Site Scripting!" . Recuperado el 9 de febrero de 2023.
El 16 de enero de 2000, se sugirieron los siguientes nombres y se barajaron entre un pequeño grupo de ingenieros de seguridad de Microsoft: [...] Al día siguiente hubo consenso: Cross-Site Scripting.
- ↑ Grossman, Jeremiah (30 de julio de 2006). "Los orígenes del Cross-Site Scripting (XSS)" . Recuperado el 15 de septiembre de 2008 .
- ↑ Leyden, John (23 de mayo de 2008). "Facebook atacado por una vulnerabilidad XSS" . The Register . Consultado el 28 de mayo de 2008 .
- ↑ Christey, Steve; Martin, Robert A. (22 de mayo de 2007). "Distribuciones de tipos de vulnerabilidad en CVE (versión 1.1)" . MITRE Corporation . Recuperado el 7 de junio de 2008 .
- ↑ Berinato, Scott (1 de enero de 2007). "Divulgación de vulnerabilidades de software: el efecto disuasorio" . CSO . CXO Media . pág. 7. Archivado del original el 18 de abril de 2008. Recuperado el 7 de junio de 2008 .
- 1 2 Paco, Hope; Walther, Ben (2008). Web Security Testing Cookbook . Sebastopol, CA: O'Reilly Media, Inc. pág . 128. ISBN 978-0-596-51483-9.
- ↑ Hydara, Isatou; Sultan, Abu Bakar Md.; Zulzalil, Hazura; Admodisastro, Novia (1 de febrero de 2015). "Estado actual de la investigación sobre secuencias de comandos entre sitios (XSS): una revisión sistemática de la literatura" . Information and Software Technology . 58 : 170–186 . doi : 10.1016/j.infsof.2014.07.010 .
- 1 2 3 "Cross-site Scripting" . Consorcio de Seguridad de Aplicaciones Web. 2005. Recuperado el 28 de mayo de 2008 .
- ↑ Grossman, Jeremiah; Hansen, Robert; Fogie, Seth; Petkov, Petko D.; Rager, Anton (2007). Ataques XSS: Exploits y defensa contra secuencias de comandos entre sitios (Resumen) . Syngress. pp. 70, 156. ISBN 978-1-59749-154-9Consultado el 28 de mayo de 2008 .
- ↑ Virus y gusanos en Alcorn, Wade (27 de septiembre de 2005). "El virus de secuencias de comandos entre sitios" . BindShell.net. Archivado del original el 16 de mayo de 2008. Recuperado el 27 de mayo de 2008 .y Grossman, Jeremiah (noviembre de 2020). "Gusanos y virus de secuencias de comandos entre sitios: la amenaza inminente y la mejor defensa" . WhiteHat Security. pág. 20. Recuperado el 6 de junio de 2008 .
- ↑ "XSS basado en DOM" . OWASP.
- ↑ "Error de jQuery n.° 9521" . 2011.
- ↑ "Hoja de trucos para la prevención de XSS basada en DOM" . OWASP.
- ↑ "Escape contextual estricto" . Angular.js.
- ↑ "Intentos de estafa de Facebook mediante XSS autoinducido para engañar a los usuarios y que se autoinfecten" . www.majorgeeks.com . 29 de julio de 2014. Consultado el 20 de septiembre de 2016 .
- ↑ Heiderich, Mario; Schwenk, Jörg; Frosch, Tilman; Magazinius, Jonas; Yang, Edward Z. (2013). "Ataques mXSS: Ataque a aplicaciones web bien protegidas mediante mutaciones innerHTML". Actas de la Conferencia ACM SIGSAC de 2013 sobre seguridad informática y de comunicaciones . págs. 777–788 . doi : 10.1145/2508859.2516723 .
- 1 2 Williams, Jeff (19 de enero de 2009). "Hoja de trucos para la prevención de XSS (Cross Site Scripting)" . OWASP. Archivado del original el 18 de marzo de 2017. Recuperado el 4 de febrero de 2010 .
- ↑ "plantilla - El lenguaje de programación Go" . golang.org . Consultado el 1 de mayo de 2019 .
- ↑ "pug-plugin-trusted-types" . npm . Consultado el 1 de mayo de 2019 .
- ↑ Sharma, Anand (3 de febrero de 2004). "Prevención de un ataque de secuencias de comandos entre sitios" . IBM . Consultado el 29 de mayo de 2008 .
- 1 2 "ModSecurity: Características: Protección XSS universal para PDF" . Seguridad contra brechas de seguridad. Archivado del original el 23 de marzo de 2008. Recuperado el 6 de junio de 2008 .
- ↑ "Seguridad de Ajax y Mashup" . OpenAjax Alliance. Archivado del original el 3 de abril de 2008. Consultado el 9 de junio de 2008 .
- ↑ O'Reilly, Tim (30 de septiembre de 2005). "¿Qué es la Web 2.0?" . O'Reilly Media. págs. 4–5 . Recuperado el 4 de junio de 2008 .
- ↑ "Una página debería funcionar, aunque sea de forma degradada, sin JavaScript." en Zammetti, Frank (16 de abril de 2007). Proyectos prácticos de JavaScript, scripting DOM y Ajax a través de Amazon Reader . Apress. pág. 36. ISBN 978-1-59059-816-0. Consultado el 4 de junio de 2008 .
- ↑ "Cómo usar zonas de seguridad en Internet Explorer" . Microsoft. 18 de diciembre de 2007. Consultado el 4 de junio de 2008 .
- ↑ Lie, Håkon Wium (7 de febrero de 2006). "Opera 9 Technology Preview 2" . Opera Software. Archivado del original el 17 de mayo de 2008. Recuperado el 4 de junio de 2008 .
- ↑ "NoScript" . Mozilla. 30 de mayo de 2008. Consultado el 4 de junio de 2008 .y Mogull, Rich (18 de marzo de 2008). "¿Deberían los usuarios de Mac usar software antivirus?" . TidBITS . TidBITS Publishing . Recuperado el 4 de junio de 2008 .
- ↑ ""Uso de eventos del lado del cliente" en la Guía del programador de DataWindow . Sybase. Marzo de 2003. Archivado del original el 18 de junio de 2008. Consultado el 4 de junio de 2008 .
- ↑ El 73% de los sitios web dependían de JavaScript a finales de 2006, en "La mayoría de los sitios web están inhabilitados . BBC News . 6 de diciembre de 2006. Consultado el 4 de junio de 2008 .
- ↑ "Características de NoScript" . Consultado el 7 de marzo de 2009 .
- ↑ "Especificación de tipos confiables en desarrollo" . wicg.github.io . Consultado el 1 de mayo de 2019 .
- ↑ LK Shar y HBK Tan, "Eliminación automatizada de vulnerabilidades de secuencias de comandos entre sitios en aplicaciones web", Information and Software Technology, vol. 54, (5), pp. 467-478, 2012.
- ↑ Mark, Goodwin; Mike, West (6 de abril de 2016). "Cookies del mismo sitio" . tools.ietf.org . Consultado el 4 de mayo de 2018 .
- ↑ "¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." . caniuse.com . Consultado el 4 de mayo de 2018 .
Lecturas adicionales
- MacKenzie, Thomas. "ScriptAlert1.com – Explicación concisa de secuencias de comandos entre sitios en varios idiomas" . Consultado el 24 de octubre de 2015 .
- "Prevención de XSS en ASP.NET simplificada" . Lock Me Down | Seguridad para el desarrollador cotidiano . 6 de febrero de 2015. Consultado el 24 de octubre de 2015 .
- "Cross-Site Scripting" . El Consorcio de Seguridad de Aplicaciones Web . 13 de octubre de 2005. Consultado el 24 de octubre de 2015 .
Enlaces externos
- OWASP : XSS , Pruebas para XSS , Revisión de código para XSS
- XSSed: Base de datos de sitios web vulnerables a ataques de secuencias de comandos entre sitios (XSS).
- vulnerabilidades de seguridad web
- Explotación de inyecciones
- Piratería informática (seguridad informática)
- Vulnerabilidades de seguridad web del lado del cliente