Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Remover Metadatos de Imágenes

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en C Sharp al eliminar los metadatos de las imágenes. La información sensible puede filtrarse a través de los metadatos presentes en imágenes y fotografías.

Necesidad

Remover metadatos de imágenes en C#.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en C#.

  2. La aplicación utiliza imágenes o fotografías.

  3. Se requiere remover metadatos en imágenes.

Solución

Al momento de desarrollar una aplicación, es importante que tanto ésta como sus dependencias, cumplan con ciertas medidas de seguridad para garantizar que no sea vulnerada por ciberdelincuentes. Cuando una aplicación utiliza imágenes a menudo éstas contienen metadatos. Los metadatos proporcionan información adicional sobre la imagen, como fecha de captura (para el caso de una fotografía), tamaño en pixeles, información sobre el dispositivo con el que se tomó (marca, modelo, etc.), última fecha de modificación, ubicación geográfica entre muchos otros datos. Un ejemplo de esto son las cabeceras EXIF (Exchangeable Image Format) presente en los formatos JPG, TIFF, RIFF y WAVE [1]. En este artículo mostraremos cómo remover los metadatos de una imagen utilizando el lenguaje de progrmación C#.

  1. Para eliminar metadatos en imágenes, primero importamos los namespaces necesarios y definimos el nombre de la clase. Para el correcto funcionamiento de los métodos que utilizaremos más adelante importamos las librerías System y System.Drawing necesarios para el tratamiento de la imagen. A continuación se presenta la porción de código encargada del procedimiento descrito anteriormente:

    cleanmetadata.cs
    1
    2
    3
    4
    5
    6
    using System;
    using System.Drawing;
    
    namespace metadata
    {
      class MainClass{
    
  2. Desarrollamos el método Main donde llamamos al método RemoveExifData con la ruta de la imagen:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void Main(string[] args) {
      try {
        Console.WriteLine(RemoveExifData("image.jpg"));
      }
    
      catch (IOException e) {
        Console.WriteLine("Error "+e.Message);
      }
    }
    
  3. El método RemoveExifData se encarga de leer la imagen pixel por pixel, sin tener en cuenta cualquier otro tipo de dato, por lo que es una función segura al momento de eliminar información extra contenida en la imagen. Este método recibe como parámetro la ruta donde se encuentra alojada la imagen.

    1
    public static string RemoveExifData(string imagePath){
    
  4. Se lee la imagen utilizando el método FromFile de la clase Image pasando como parámetro la ruta de la imagen y se vuelve a guardar utilizando el método Save. Esto permite sobrescribir la imagen, eliminando los metadatos en la nueva imagen.

    1
    2
    3
    4
      Image bufImage = Image.FromFile(imagePath);
      bufImage.Save(imagePath);
      return imagePath;
    }
    



Haz un comentario

Estado de los servicios - Términos de Uso