Come molti problemi relativi alla sicurezza, è una risposta sottile: il kolossus offre una buona panoramica.
Aiuta a capire in che modo un utente malintenzionato potrebbe compromettere la propria API e il numero di violazioni della sicurezza.
La maggior parte delle violazioni della sicurezza sono causate da errori o sviste e gli aggressori cercano quelle. Un utente malintenzionato che sta tentando di compromettere la tua API tenterà innanzitutto di raccogliere informazioni su di esso - poiché si tratta di un'API, presumibilmente si pubblicherà una documentazione dettagliata sull'utilizzo.Un utente malintenzionato utilizzerà questo documento e tenterà in molti modi diversi di rendere il tuo sito in crash (e quindi di esporre più informazioni, se è fortunato), o reagire in modi che non avevi previsto. Devi presumere che l'attaccante abbia un sacco di tempo e scriverà il suo attacco per provare ogni singola strada - come un ladro con un tempo infinito, che gira per casa tua provando ogni porta e finestra, con un grimaldello che impara da ogni tentativo
Quindi, se la tua API espone un metodo come getUserInfo(userid)
e userID è un numero intero, l'utente malintenzionato scriverà uno script per iterare da 0 in su per scoprire quanti utenti hai. Proveranno numeri negativi e max(INT) + 1
. La tua applicazione potrebbe trapelare informazioni in tutti questi casi e, se lo sviluppatore ha dimenticato di gestire determinati errori, potrebbe esporre più dati di quelli previsti.
Se l'API include la logica per limitare l'accesso a determinati dati, ad es. hai il permesso di eseguire getUserInfo
per gli utenti nella tua lista di amici - l'attaccante potrebbe essere fortunato con alcuni numeri a causa di un bug o di una svista, e saprà che le informazioni che sta ottenendo si riferiscono a un utente valido, quindi possono costruire un modello del modo in cui è progettata la tua applicazione. È l'equivalente di un ladro, sapendo che tutte le serrature provengono da un unico produttore, quindi devono solo portare con sé quel grimaldello.
Di per sé, questo può non essere di alcun vantaggio per l'attaccante - ma rende la loro vita un po 'più facile.
Dato lo sforzo di utilizzare UUID o un altro identificatore privo di significato, è probabilmente la pena rendere le cose più difficili per l'aggressore. Ovviamente non è la considerazione più importante - probabilmente non fa le 5 cose che dovresti fare per proteggere la tua API dagli aggressori - ma aiuta.
fonte
2012-09-12 09:08:57