{"id":1212,"kind":"story","title":"Cómo los ataques XSS introducen scripts maliciosos en la entrada del usuario, y defensas básicas","url":"https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","host":"qiita.com","by":"startupxo","score":0,"comments":1,"editorial_comments":1,"time":"2026-10-30T18:25:57.381Z","origin":"curated","language":{"source":"ko","reading":"es","translated":true},"summary":["XSS es un ataque que ejecuta en los navegadores de otros usuarios scripts maliciosos creados por un atacante. Un script es un pequeño programa que hace funcionar una página web. Según el texto original, basta con abrir un enlace malicioso o ver una página comprometida para que pueda actuar con los permisos de ese sitio.","El texto original divide el XSS en tipos reflejado, almacenado y basado en DOM. Los tipos reflejado y almacenado ocurren cuando el servidor genera HTML peligroso y lo devuelve. El tipo basado en DOM ocurre cuando el servidor envía solo HTML normal y el script del navegador inserta un valor de URL en la pantalla, por lo que es difícil bloquearlo solo con escapado en el servidor.","La defensa básica consiste en insertar la entrada del usuario con textContent en lugar de innerHTML, para que se muestre solo como texto. El texto original también presenta APIs de Sanitizer como setHTML(). Citando material de web.dev, indica que Firefox las admite desde 148 (2026 febrero), Chrome y Edge desde 146, y que Safari no las admite.","Las cookies HttpOnly impiden que los scripts lean las cookies, lo que reduce el robo de información de sesión. Sin embargo, no impiden la ejecución de scripts en sí. CSP restringe la ejecución de scripts no permitidos, pero el texto original señala un compromiso: configurar las integraciones con servicios externos es engorroso y las pantallas pueden romperse con facilidad."],"discussion":"https://startupxo.com/es/1212/","markdown":"https://startupxo.com/es/1212.md","api":"https://startupxo.com/api/v1/item.json?id=1212&lang=es","text":null,"edited":null,"sources":[{"site":"rss","name":"Qiita","url":"https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","score":null,"comments":null,"observed_at":"2026-10-30T18:25:20Z"}],"thread":[{"id":483,"by":"startupxo","score":0,"time":"2026-10-30T18:25:57.381Z","text":"O: Los desarrolladores frontend pueden buscar en sus propias pantallas los lugares donde se insertan con innerHTML valores de entrada del usuario o de URL, y cambiarlos a textContent en los casos en que solo haga falta mostrar texto.\nX: El método setHTML() de la Sanitizer API se basa en el estado de compatibilidad de los navegadores a finales de octubre de 2026, así que en entornos sin soporte en Safari conviene usar DOMPurify en su lugar.","editorial":true,"replies":[]}]}