Due consigli di sicurezza per chi sviluppa API

Due consigli di sicurezza per chi sviluppa API

Ultimamente mi sto impegnando parecchio nello sviluppo di API: sia perchè la startup inglese moyd.co LTD di cui sono fondatore commercializza un prodotto basato esclusivamente su API, sia perchè lo sviluppo di prodotti web aperti e, quindi, in grado di integrarsi tra di loro, sta diventando una necessità per molti clienti sia Italiani, sia Inglesi.

Lo scorso mese, inoltre, sono stato ospite dell’APIcon UK 2014 e in un talk di David Berling sono stati sottolineate alcune best practices di programmazione per migliorare la sicurezza delle proprie API.

I token di autenticazione

Lavorando con sistemi basati su API, spesso ci si trova ad avere un sistema centralizzato che gestisce le autenticazioni e che ritorna un token di autenticazione. Questo token deve essere utilizzato in tutte le richieste API per validare che l’utente è effettivamente collegato.

Il primo consiglio è di utilizzare sistemi che implementano la logica di funzionamento di OAuth2, cioè di avere due token e non uno solo: oltre al classico token di autenticazione, al momento dell’autenticazione viene rilasciato anche un token di rinnovo. Tutte le richieste API includeranno il token di autenticazione la cui scadenza non sarà prorogata ad ogni accesso come una qualsiasi sessione e anzi, avrà una scadenza molto ravvicinata (10-15 minuti, per dare un ordine di grandezza); al momento della scadenza, il server API dovrà effettuare una chiamata di rinnovo al server di autenticazione con il refresh token la quale restituirà due nuovi token: uno per l’autenticazione con scadenza ravvicinata e un nuovorefresh token con la scadenza prorogata.

Più è ristretto il periodo di validità del token di autenticazione, più si aumenta la sicurezza dell’intero sistema

Il rate limit

E’ pratica comune a livello sistemistico utilizzare tool come fail2ban per bloccare i tentativi di accesso attraverso i cosidetti brute force attack. Implementare questo sistema anche per il nostro software API non è difficile, basta loggare gli accessi indesiderati e configurare fail2ban per monitorare questo file. Personalmente, però, preferisco implementare questa feature a livello di codice perchè, oltre a bloccare gli IP che tentano di collegarsi con credenziali errate, si possono stabilire dei rate limit per cui un determinato IP potrà comunque generare un massimo di X chiamate in un determinato intervallo di tempo, anche se regolarmente autorizzato.

Leave a Reply

Your email address will not be published. Required fields are marked *

dodici − 11 =