Nel mondo digitale di oggi, immagini e video spesso contengono metadati che rivelano una quantità sorprendente di informazioni sul file multimediale. Questi metadati, come i dati EXIF nelle immagini, possono includere dettagli sensibili come posizione, informazioni sul dispositivo e altro. Per proteggere la privacy degli utenti e migliorare la sicurezza, le aziende di vari settori possono trarre vantaggio dalla rimozione di questi metadati dai file multimediali. In questo blog post, ti guideremo attraverso un semplice script AWS Lambda che rimuove automaticamente i metadati da immagini e video caricati nei bucket S3.

Settori Che Possono Trarne Vantaggio:

  1. Piattaforme di Social Media: Le piattaforme di social media gestiscono un numero enorme di caricamenti multimediali ogni giorno. Rimuovendo i metadati, queste piattaforme possono proteggere meglio la privacy degli utenti.
  2. E-Commerce: I siti web di e-commerce spesso mostrano contenuti generati dagli utenti, come immagini di prodotti e recensioni. Rimuovere i metadati garantisce che le informazioni private dei clienti non vengano esposte inavvertitamente.
  3. Sanità: Il settore sanitario gestisce informazioni sensibili sui pazienti, incluse immagini e video di procedure mediche. Rimuovere i metadati è essenziale per conformarsi alle normative sulla privacy.
  4. News e Media: I giornalisti e le organizzazioni dei media pubblicano immagini e video che possono contenere informazioni sensibili su fonti o luoghi. Rimuovere i metadati può aiutare a proteggere queste informazioni.
  5. Istruzione: Le istituzioni educative ospitano e condividono vari file multimediali. La rimozione dei metadati garantisce la protezione delle informazioni private su studenti, docenti e soggetti di ricerca.
import boto3
import io
import os
from PIL import Image
from moviepy.editor import *

def lambda_handler(event, _): bucket_name = os.environ[‘S3_BUCKET_NAME’] s3 = boto3.client(‘s3’) object_name = event[‘Records’][0][‘s3’][‘object’][‘key’] file_name, file_extension = os.path.splitext(object_name)

supported_image_extensions = ['.jpg', '.jpeg', '.png', '.tiff', '.tif', '.heic', '.heif']
supported_video_extensions = ['.mp4', '.mov', '.avi', '.mkv', '.webm']

image_data = s3.get_object(Bucket=bucket_name, Key=object_name)

if file_extension.lower() in supported_image_extensions:
    with io.BytesIO(image_data['Body'].read()) as image_file:
        image = Image.open(image_file)
        image_format = image.format
        
        with io.BytesIO() as new_image_data:
            image.save(new_image_data, format=image_format)
            new_image_data.seek(0)
            
            s3.put_object(Bucket=bucket_name, Key=object_name, Body=new_image_data, Tagging='ExifDeleted=True')

elif file_extension.lower() in supported_video_extensions:
    with io.BytesIO(image_data['Body'].read()) as video_file:
        video = VideoFileClip(video_file)
        with io.BytesIO() as new_video_data:
            video.write_videofile(new_video_data, codec='libx264', audio_codec='aac')
            new_video_data.seek(0)
            
            s3.put_object(Bucket=bucket_name, Key=object_name, Body=new_video_data, Tagging='ExifDeleted=True')

Nota che le librerie PIL e moviepy richiedono alcune librerie condivise, che potrebbero non essere disponibili nell'ambiente Lambda predefinito. Dovrai creare un layer Lambda personalizzato che includa entrambe le librerie condivise. Puoi seguire la guida ufficiale per creare un layer Lambda personalizzato per FFmpeg.

Ecco il Repository Github: https://github.com/flightlesstux/EXIF-Metadata-Remover

Conclusione

Lo script AWS Lambda che abbiamo fornito rende facile rimuovere i metadati da immagini e video caricati nei bucket S3, migliorando la privacy e la sicurezza in un'ampia gamma di settori. Implementando questa soluzione, puoi proteggere le informazioni degli utenti, ridurre i rischi potenziali e garantire la conformità con le normative sulla protezione dei dati.