Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

[Sugerencia] Recomendación de donde poner el titulo.

Me surgieron ciertas consultas que gracias a Luri pude resolverlas y las comparto para aquel que esté interesado.

1. Que es innerHTML?

Excelente pregunta. innerHTML es una propiedad del objeto DOM (Document Object Model) que permite acceder y modificar el contenido HTML de un elemento. Cuando usamos elemento.innerHTML, estamos obteniendo o estableciendo el HTML interno de ese elemento. Es decir, todo lo que está entre las etiquetas de apertura y cierre de ese elemento. Algunas características importantes de innerHTML: Permite leer y escribir el contenido HTML de un elemento. Al asignar un valor a innerHTML, reemplaza todo el contenido HTML del elemento. Es útil para actualizar dinámicamente el contenido de un elemento en la página web. Hay que tener cuidado con posibles ataques de inyección de código, ya que innerHTML puede interpretar código HTML/JavaScript. En el contexto del video, usamos innerHTML para asignar un título y un mensaje de instrucciones a los elementos "h1" y "p" de la página web, conectando así el JavaScript con el HTML.

2. A que te referis con tener cuidado de ataques de inyeccion?

Este tipo de ataque ocurre cuando se toma información proporcionada por un usuario (como un nombre, comentario, etc.) y se inserta directamente en el código HTML o JavaScript sin ser debidamente sanitizada o validada. Por ejemplo, si un usuario ingresa un nombre con etiquetas HTML o JavaScript malicioso, y ese valor se asigna directamente a innerHTML, el navegador interpretará y ejecutará ese código, lo cual puede permitir que un atacante realice acciones dañinas, como robar información, redirigir a sitios maliciosos, etc. Para evitar este tipo de ataques, es importante siempre validar y sanear cualquier entrada de usuario antes de insertarla en el DOM usando innerHTML. Algunas formas de hacerlo son: Usar funciones de escape de HTML para reemplazar caracteres especiales. Utilizar métodos como textContent en lugar de innerHTML cuando sea posible. Aplicar técnicas de validación y sanitización de datos en el servidor antes de enviarlos al cliente. El objetivo es asegurarse de que cualquier contenido que se inserte en el DOM a través de innerHTML sea seguro y no pueda ser utilizado para ejecutar código malicioso.

3. No comprendo como evitar la inyección de código malicioso. Es decir no es buena práctica usar entonces innerHTML?

Tienes razón, no es que innerHTML sea una mala práctica en sí misma, sino que hay que tener cuidado al usarla para evitar ataques de inyección de código. La clave está en cómo se maneja la información que se asigna a innerHTML. Aquí algunas recomendaciones: Validar y sanear los datos: Antes de asignar cualquier valor a innerHTML, es importante validar y sanear los datos para eliminar cualquier código HTML o JavaScript malicioso. Esto se puede hacer mediante funciones de escape o bibliotecas de seguridad. Usar alternativas más seguras cuando sea posible: En lugar de innerHTML, se puede usar textContent cuando solo se necesita mostrar texto plano, ya que textContent no interpreta el HTML. Aplicar la validación en el servidor: La validación y saneamiento de datos debe hacerse principalmente en el servidor, antes de enviar la información al cliente. Esto agrega una capa de seguridad adicional. Utilizar plantillas seguras: Frameworks y bibliotecas como React, Angular o Vue.js ofrecen formas seguras de renderizar contenido dinámico, como el uso de plantillas que escapan automáticamente el contenido. Mantener el código actualizado: Asegurarse de utilizar versiones actualizadas de librerías y frameworks, ya que suelen incluir parches de seguridad para vulnerabilidades conocidas. Entonces, el uso de innerHTML no es inherentemente malo, pero requiere de cuidados y buenas prácticas de seguridad para evitar que se convierta en una puerta de entrada para ataques. La clave es aplicar las medidas de seguridad adecuadas tanto en el cliente como en el servidor.

Continua en los comentarios.

3 respuestas
solución!

Por qué ponemos el titulo en el Javascript, no se puede hacer eso mismo directo desde el html sin tener que llamarlo desde el Javascript?

Excelente pregunta. Tienes razón, el título se puede establecer directamente en el archivo HTML sin necesidad de tener que hacerlo desde JavaScript. En el contexto del video, el instructor está mostrando cómo acceder y modificar elementos del HTML desde JavaScript utilizando el DOM (Document Object Model). Esto se hace con fines didácticos, para que los estudiantes entiendan cómo conectar ambos lenguajes. Sin embargo, en la práctica, lo más común y recomendado es establecer el título directamente en el archivo HTML. Esto tiene varias ventajas:

  • Separación de responsabilidades: El HTML se encarga de la estructura y el contenido de la página, mientras que JavaScript se enfoca en la interactividad y la lógica.
  • Mejor rendimiento: Establecer el título en el HTML evita tener que esperar a que JavaScript cargue y ejecute para mostrar el título, lo que mejora el tiempo de carga inicial de la página.
  • Mejor accesibilidad: Los motores de búsqueda y lectores de pantalla pueden acceder más fácilmente al título cuando está en el HTML.
  • Mejor mantenibilidad: Tener el título en el HTML lo hace más visible y fácil de modificar sin tener que tocar el JavaScript. Entonces, en la práctica, lo más recomendado sería establecer el título directamente en el archivo HTML, y usar JavaScript solo cuando se necesite modificar dinámicamente el contenido de la página. Esto sigue los principios de separación de responsabilidades y mejora la calidad y mantenibilidad del código.

Estableciendo el título en el html directo también ayudaria a evitar los ataques de inyección?

Sí, exactamente. Establecer el título directamente en el HTML, en lugar de hacerlo desde JavaScript, ayuda a prevenir los ataques de inyección de código. Cuando el título se establece en el HTML, no hay una entrada de usuario que pueda ser inyectada. El título es simplemente un valor estático que forma parte de la estructura de la página. En cambio, si el título se estableciera desde JavaScript utilizando innerHTML o similar, habría que tener mucho cuidado de sanear y validar cualquier entrada de usuario que se use para generar ese título. De lo contrario, un atacante podría insertar código malicioso que sería interpretado por el navegador. Al mantener el título en el HTML, se elimina por completo esa posibilidad de inyección, ya que no hay una entrada dinámica que pueda ser manipulada. El HTML es procesado directamente por el navegador sin pasar por JavaScript. Entonces, sí, establecer el título en el HTML en lugar de hacerlo desde JavaScript es una mejor práctica de seguridad, ya que ayuda a prevenir ataques de inyección de código. Es una forma sencilla de eliminar ese riesgo sin tener que implementar complejos mecanismos de validación y saneamiento.

Espero les sea útil la información.

Muchas gracias Kevin por compartirnos esta información.

Muchas gracias, por la información! bastante aclaradora