crowdata / app /utils /security.py
YOSOYYONOSOYOTRO's picture
Upload folder using huggingface_hub (part 2)
4223796 verified
Raw
History Blame Contribute Delete
1.11 kB
"""
Utilidades de seguridad para logs — CrowData.
Enmascara datos sensibles (CUIT, DNI, email) en logs.
"""
import re
def mask_cuit(cuit: str) -> str:
"""
Enmascara un CUIT mostrando solo los últimos 4 dígitos.
Ejemplo: 20-29681148-4 → ******1484
"""
if not cuit or len(cuit) < 6:
return "******"
clean = cuit.replace("-", "").replace(" ", "")
return "*" * (len(clean) - 4) + clean[-4:]
def mask_dni(dni: str) -> str:
"""
Enmascara un DNI mostrando solo los últimos 3 dígitos.
Ejemplo: 12345678 → ****5678
"""
if not dni or len(dni) < 4:
return "****"
clean = dni.replace(".", "").replace(" ", "")
return "*" * (len(clean) - 3) + clean[-3:]
def mask_email(email: str) -> str:
"""
Enmascara un email mostrando solo la primera letra y dominio.
Ejemplo: lucas@crowdata.ar → l*****@crowdata.ar
"""
if not email or "@" not in email:
return "***"
local, domain = email.split("@", 1)
if len(local) <= 1:
return f"*@{domain}"
return f"{local[0]}{'*' * (len(local) - 1)}@{domain}"