Consideremos agregar enlaces mediante la vinculación del atributo href. Así que en realidad estoy hablando de las URL proporcionadas por el usuario, que podrían contener direcciones incorrectas de Vue o incrustaciones de JavaScript, como aquí. Los casos que puedo pensar en este sentido podrían estar relacionados con el phishing, al construir e ingresar una URL dentro de tu aplicación que dirija a un sitio web malicioso, o una suscripción de curso reflejada.
Entonces, hay una URL que se muestra en la aplicación web. Pero un atacante agregará algo de JavaScript a la URL. Nuevamente, la sanitización te ayudará mucho a evitarlo. Por lo tanto, podrías considerar usar bibliotecas como sanitizeURL para ayudarte. Supongo que lo pondré en un tuit, para que puedas encontrarlo aún más fácilmente, porque veo que no agregué un código QR. Pero no olvides tu backend, ya que tu backend siempre debe sanear las URL proporcionadas por el usuario antes de guardarlas en una base de datos. Y lo último, pero aún importante, ten en cuenta que las URL siempre pueden dirigir a destinos inseguros, incluso si al principio son destinos seguros. Por lo tanto, es el punto en el que pierdes el control.
Bueno, el siguiente tipo de inyección es la inyección de estilos, un tipo que me sorprendió al principio, porque pensé, ¿estilizar con CSS, verdad? ¿Cómo puede ser un ángulo de ataque? Pero hay un punto. Existe una técnica llamada ataque de redireccionamiento de la interfaz de usuario (UI redress). Imagina que tienes un control oculto de la interfaz de usuario. Entonces, un atacante lo estilizará. Ok, comencemos con un ejemplo. Tienes un formulario de inicio de sesión con un botón de inicio de sesión para enviar tus credenciales, y el atacante estilizará este botón de inicio de sesión como otra caja transparente que cubre este botón de inicio de sesión. Y luego, estilizará un enlace sobre él. Así que no enviarás tus credenciales de inicio de sesión a la página que esperas, sino que te llevará a una página de inicio de sesión falsa al tener una caja transparente encima o cubriendo tu botón de inicio de sesión. Redireccionamiento, en realidad. Entonces, con estos estilos proporcionados por el usuario aquí, los usuarios malintencionados podrían proporcionar CSS para hacer clic en la verificación. ¿Cómo podemos evitar eso? Bueno, deberíamos permitir que el usuario ajuste el estilo solo de manera segura, como tener un iframe en un entorno seguro o permitir el control total de CSS de manera segura. Es decir, en este sentido, el usuario solo puede establecer un color determinado o solo un fondo determinado, todos esos cambios que no son tan peligrosos, ¿verdad? Entonces, hay muchas formas de mantenerlos seguros limitando el alcance donde un usuario puede proporcionar estilos.
Por supuesto, también hay un ángulo de ataque en el propio JavaScript, que se llama inyecciones de JavaScript. Y hay algunas cosas que no deberías hacer en Vue, al menos, pero también cuando se trata de otros frameworks. Porque desde un punto de vista de código limpio o de mantenibilidad, las plantillas y las funciones de renderizado no deben tener efectos secundarios, ya que dificulta mucho la depuración. Por lo tanto, debes evitar tener atributos que acepten Strings.js. Es decir, no se deben utilizar eventos como unclick o unfocus, ni atributos. Y los scripts, por supuesto, no deben usarse en ningún complemento. Por lo tanto, se deben evitar estos elementos.
Comments