Vale la pena considerar todo lo anterior, pero para ser justos, existen prácticas de desarrollo bien aceptadas, así como protecciones integradas en los navegadores modernos que protegen contra los casos más graves señalados.
También vale la pena señalar que hay tres formas en que el código de terceros puede ejecutarse en el contexto (es decir, compartir el mismo DOM del navegador) que sus páginas web: 1) JS que incluye y representa junto con su página, p.ej Google Analytics, o 2) Bookmarklets que el usuario controla (por ejemplo, Spritzlet o Pinterest), y 3) extensiones de navegador o barras de herramientas. Los dos últimos están casi completamente fuera de su control; El primero es algo que puedes auditar hasta cierto punto.
Por mucho, lo más importante que debe asegurarse es que los servidores web que controla y que responden al cliente (navegador, bot, malware) están bloqueados. XSS, CSRF, inyección de SQL y muchos otros vectores de ataque están bajo su control en el lado del servidor. Tendría que permitir explícitamente CORS en su servidor, pero si lo hace, asegúrese de saber lo que está haciendo y esté particularmente atento. Esto no quiere decir que todo esto sea fácil, obvio o algo así, pero es totalmente independiente de si la vulnerabilidad se viola a través de JS o cualquier otro método.
Suponiendo que ha protegido su servidor web y ha bloqueado los puntos finales a los que se puede llamar, el resto de lo que falla funciona en una clase diferente. JS (y plugins / extensions / toolbars / bookmarklets) puede hacer una gran variedad de cosas malas: registradores de pulsaciones de teclas, inyección de elementos de apariencia inofensiva que en realidad envían datos a otros lugares, etc. Todos estos son ejecutados por el navegador.
Si está sirviendo el JS en nombre de un tercero, debe tener cuidado de confiar y verificar la fuente. Un fragmento de Google Analytics es probablemente seguro. Un widget de publicación de anuncios de terceros podría valer la pena estudiarlo más detenidamente. En todos los casos, el código detrás de estos puede ser inspeccionado: si el navegador puede ejecutarlo, puede ver el código JS y decidir: ¿es esto algo que desea en su sitio?
JavaScript es una herramienta poderosa. Pero al final, JS es un software que ejecuta el navegador, por lo que confiamos mucho en los navegadores y sistemas operativos que los ejecutan para garantizar la seguridad. JS no es un software que tenga habilidades mágicas particulares para violar su servidor o hacer que su servidor haga cosas para las que no está diseñado.
Su sitio puede hacer poco o nada, lo que le permite a JS ejecutar código de manera arbitraria en la computadora del usuario; es el usuario el que debe tener actualizaciones recientes a los navegadores y sistemas operativos, etc. Puede detectar versiones antiguas y publicar advertencias en Sé un buen chico, pero eso es todo.
Asegure su servidor, instale actualizaciones, asegúrese de que su código esté seguro, evite servir a JS de terceros desconocidos. Y luego, asegúrese de que su sitio esté registrado con las Herramientas para webmasters de Google, que le notificarán si su sitio ha sido pirateado en muchos casos y, si se lo puede permitir, obtenga un servicio que analice las vulnerabilidades de su sitio.