Me parece que debido a que los usuarios pueden publicar preguntas y comentarios en ellos con el código HTML (posiblemente etiquetas <script>
), los sitios de Stack Exchange estarían muy expuestos a los ataques XSS. ¿Cómo se protegen de esto?
Para comentarios generales, las etiquetas de script están escapadas correctamente, de modo que solo se interpreta como texto en lugar de como código real . En este caso, ese tipo de cosas se manejan a través de algo conocido como codificación HTML, donde su etiqueta <script>
se convertiría en <script>
y se representaría como una cadena de texto en lugar de interpretarse como código.
Dicho esto, StackOverflow ha trabajado en una nueva característica que permite javascript ejecutable en las respuestas de las personas: enlace
Algunos de los puntos de seguridad del artículo que quiero resaltar:
¿Son seguros los fragmentos de pila?
Sí, tanto como la web en general es segura. No estás en más peligro que cuando estás navegando. sitio con JavaScript habilitado. Dicho esto, los fragmentos se están ejecutando. código de cliente en su navegador, y siempre debe tener cuidado Al ejecutar código contribuido por otro usuario. Aislamos fragmentos desde nuestros sitios para bloquear el acceso a sus datos privados de intercambio de pila:
• Utilizamos iframes de espacio aislado en HTML5 para evitar muchas formas de ataque malicioso
• Representamos los fragmentos de código en un dominio externo (stacksnippets.net) para garantizar que la política del mismo origen es no está vigente y para evitar que los fragmentos accedan a su sesión iniciada Sesión o cookies.
Como todos los demás aspectos de nuestro sitio, Apilar Los fragmentos son finalmente gobernados por la comunidad. Porque los usuarios pueden Todavía escribo código que crea comportamientos molestos como bucles infinitos o ventanas emergentes, inhabilitamos fragmentos de cualquier publicación que tenga una gran cantidad de votos a la baja. (puntuación inferior a -3 en Stack Overflow, -8 en Meta). Si ves mal código que crees que debería estar deshabilitado, vota abajo de la publicación. Si tú ves código destinado a ser dañino (como un intento de phishing), deberías marcarlo para la atención del moderador.
Esto se hace al sanear los datos que ingresan los usuarios y convertirlos a un formato seguro para mostrarlos en la pantalla. En esencia, toma la entrada del usuario y convierte caracteres especiales (& lt ;, & gt ;, /, \, etc) en entidades html, lo que los hace inofensivos para mostrarlos en una página web.
Lea otras preguntas en las etiquetas html xss javascript