Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
¿Cómo procesar una imagen de otro dominio en JavaScript?

¿Hay alguna buena manera de arrastrar y soltar una imagen desde una página web en otro dominio en mi página web y luego procesar los datos?

He probado una variedad de métodos, pero cada método que pruebo parece tener restricciones relacionadas con el origen cruzado.

Puedo entender decir, no ejecutar scripts desde servidores extranjeros.

Pero dado lo siguiente, no veo cómo la inspección de los datos de la imagen plantea un problema de seguridad adicional.

  • La imagen está disponible públicamente sin ninguna credencial.
  • El usuario ya puede ver la imagen en el sitio original.
  • El usuario ya puede hacer clic con el botón derecho y guardar la imagen si lo desea y, después de guardarla, colocarla en mi página web y realizar el mismo procesamiento. Sólo quiero ahorrarles el paso.
  • Si quiero cargar la imagen en mi página web y luego dibujarla allí, el navegador muestra la imagen ajena en mi página web.
  • Si quisiera mostrarle al usuario una versión alterada de la imagen, aún podría hacerlo fácilmente simplemente superponiendo otro lienzo transparente encima y dibujando sobre eso.
  • El hecho de que el navegador no permita que alguien procese la imagen ajena, no impide que alguien cree una aplicación de escritorio que pueda extraer la imagen de las mismas URL y hacer lo que quiera con ella.

Entonces, si ya puedo hacer todas esas cosas, ¿cómo es un problema de seguridad que mi secuencia de comandos lea los datos de color de la imagen? ¿Qué cosas malas pueden suceder si descubro que el color de un píxel en la coordenada (55, 73) es rojo? ¿Qué posibles ataques de seguridad podrían resultar?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No, no creo que haya una manera de hacerlo con javascript.

En este punto:

El usuario ya puede hacer clic con el botón derecho y guardar la imagen si lo desea y, después de guardarla, colocarla en mi página web y realizar el mismo procesamiento. Sólo quiero ahorrarles el paso.

podría descargar automáticamente esa imagen a su servidor y procesar la imagen en él.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Cree un elemento de zona de caída (utilicé un elemento pero puede crear un elemento diferente):

 <main></main> <script> const dropzone = document.querySelector('main'); </script>

Dale a la zona de caída un estilo de borde discontinuo:

 <style> main { border: 1px border lightgray; width: 100px; height: 100px; } </style>

Resalte la zona de colocación cuando se activa el evento dragenter (la imagen se arrastra sobre la zona de colocación):

 <style> .active { border: 1px dashed black; } </style> <script> // ... dropzone.addEventListener('dragenter', event => { event.preventDefault(); dropzone.classList.add('active'); });

event.preventDefault() is necessary or else the image will be opened from your local file explorer .

Elimine el resaltado de la zona de colocación cuando se activa el evento dragleave (la imagen ya no se arrastra sobre la zona de colocación):

 <script> // ... dropzone.addEventListener('dragleave', event => { event.preventDefault(); dropzone.classList.remove('active'); }); </script>

Es necesario manejar el evento de arrastre antes de que ocurra la caída:

 <script> // ... dropzone.addEventListener('dragover', event => { event.preventDefault(); }); </script>

Ahora maneje el evento de caída (cuando la imagen se libera dentro de la zona de caída):

 <script> // ... dropzone.addEventListener('drop', event => { event.preventDefault(); dropzone.classList.remove('active'); const file = event.dataTransfer.files[0]; const reader = new FileReader(); reader.readAsDataURL(file); reader.addEventListener('loadend', () => { const img = document.createElement('img'); img.src = reader.result; dropzone.append(img); }); }); </script>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda