🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Sicurezza negli Script Google Apps: Best Practices

Codegrind TeamAug 23 2024

La sicurezza negli script Google Apps è fondamentale per proteggere i dati e garantire l’integrità delle applicazioni. In questa guida, esploreremo le best practices per la sicurezza durante lo sviluppo e l’implementazione di script Google Apps, concentrandoci sulla protezione delle informazioni sensibili, la gestione sicura degli accessi e la prevenzione delle vulnerabilità comuni.

Protezione dei Dati Sensibili

1. Evitare di Hardcodare Informazioni Sensibili

Non inserire mai informazioni sensibili come credenziali, token API o chiavi di crittografia direttamente nel codice degli script.

// Esempio NON sicuro: hardcoding delle credenziali
var apiKey = "YOUR_API_KEY"; // Evitare

Invece, utilizza il servizio PropertiesService per memorizzare in modo sicuro le informazioni sensibili.

// Esempio sicuro: utilizzo di PropertiesService
function getApiKey() {
  return PropertiesService.getScriptProperties().getProperty("API_KEY");
}

2. Utilizzare OAuth2 per l’Autenticazione

Quando possibile, utilizza OAuth2 per autenticare l’accesso alle API, evitando di esporre direttamente le credenziali degli utenti.

function authenticateWithOAuth2() {
  var service = OAuth2.createService("MyService")
    .setAuthorizationBaseUrl("https://accounts.google.com/o/oauth2/auth")
    .setTokenUrl("https://accounts.google.com/o/oauth2/token")
    .setClientId("YOUR_CLIENT_ID")
    .setClientSecret("YOUR_CLIENT_SECRET")
    .setCallbackFunction("authCallback")
    .setPropertyStore(PropertiesService.getUserProperties())
    .setScope("https://www.googleapis.com/auth/userinfo.profile");

  if (!service.hasAccess()) {
    Logger.log("Autorizzazione richiesta.");
    return service.getAuthorizationUrl();
  }
}

Gestione Sicura degli Accessi

1. Limitare le Autorizzazioni dell’App

Richiedi solo le autorizzazioni strettamente necessarie per eseguire le funzioni dello script. Questo riduce i rischi associati a eventuali vulnerabilità.

{
  "oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets.readonly",
    "https://www.googleapis.com/auth/script.container.ui"
  ]
}

2. Gestire in Modo Sicuro gli Accessi Utente

Implementa controlli per verificare che solo gli utenti autorizzati possano accedere o modificare i dati gestiti dallo script.

function checkUserAuthorization() {
  var email = Session.getActiveUser().getEmail();
  var authorizedUsers = ["user1@example.com", "user2@example.com"];

  if (authorizedUsers.indexOf(email) === -1) {
    throw new Error("Utente non autorizzato: " + email);
  }
}

Prevenzione delle Vulnerabilità

1. Validazione dell’Input dell’Utente

Valida sempre l’input dell’utente per prevenire attacchi di tipo injection e altri tipi di vulnerabilità.

function validateUserInput(input) {
  if (!/^[a-zA-Z0-9_]+$/.test(input)) {
    throw new Error("Input non valido");
  }
  return input;
}

2. Gestione Sicura degli Errori

Gestisci gli errori in modo sicuro, evitando di esporre informazioni sensibili nei messaggi di errore.

function safeErrorHandling() {
  try {
    // Codice che potrebbe generare un errore
  } catch (e) {
    Logger.log("Errore: si è verificato un problema durante l'esecuzione.");
    throw new Error("Operazione non riuscita. Per favore riprova più tardi.");
  }
}

Monitoraggio e Log Sicuro

1. Implementare un Logging Sicuro

Evita di registrare informazioni sensibili nei log. Utilizza i log solo per informazioni non sensibili o anonime.

function logSafeInfo(info) {
  Logger.log("Informazione: " + info); // Assicurati che 'info' non contenga dati sensibili
}

2. Monitorare le Attività Sospette

Implementa il monitoraggio delle attività sospette per identificare e rispondere rapidamente a potenziali minacce.

function monitorSuspiciousActivity() {
  var accessAttempts =
    PropertiesService.getScriptProperties().getProperty("accessAttempts") || 0;
  accessAttempts++;

  if (accessAttempts > 5) {
    Logger.log("Attività sospetta rilevata: tentativi di accesso multipli.");
    // Implementa azioni di sicurezza, come il blocco dell'accesso
  }

  PropertiesService.getScriptProperties().setProperty(
    "accessAttempts",
    accessAttempts
  );
}

Conclusione

Seguire le best practices per la sicurezza negli script Google Apps è essenziale per proteggere i dati e garantire che le applicazioni siano resistenti agli attacchi e alle vulnerabilità. Implementando queste misure, puoi ridurre significativamente i rischi associati all’uso di Google Apps Script, assicurando un ambiente sicuro e affidabile per gli utenti.