Sono uno studente di informatica che cerca di espandere un'applicazione web già sviluppata nell'uso dell'architettura multi-tenant. Considerando che sono ben lungi dall'essere un esperto di sicurezza, quali precauzioni posso prendere per la mia applicazione più sicura possibile? Ecco come ho pensato di farlo, in gran parte basato su questo articolo di msdn: link
quadro
Django
Questo è quello che ho usato per sviluppare il software e poiché utilizzo esclusivamente il suo ORM, dovrei essere ben protetto contro le iniezioni SQL. Le password vengono sottoposte a hash e tutte le forme sono protette da CSRF. Sto pensando di vietare in qualche modo agli utenti di usare password deboli, idee? Altre precauzioni da prendere?
Livello database
Database condiviso, uno schema per titolare
Ho deciso di adottare questa soluzione perché mi garantisce ancora una buona sicurezza ("moderato livello di isolamento dei dati logici") e non devo modificare molto il mio codice. Un tenant può essere identificato esclusivamente dal sottodominio, ad esempio tenant1.website.com. Posso semplicemente dire al database di usare il tenant dello schema1. Qui non so se dovrei creare un utente di database per ciascuno dei tenant, l'articolo lo chiama come "una combinazione dell'impersonificazione e degli approcci del sottosistema fidati". Fondamentalmente crea un utente per ogni titolare che ha le autorizzazioni solo su quello schema. ha senso? Dove dovrei memorizzare la password per ciascun utente?
Crittografia simmetrica per dati sensibili
In realtà non memorizzo informazioni super importanti come i numeri delle carte di credito, ma ci sono un paio di campi che sarebbero belli se fossero un po 'più sicuri. Gli inquilini memorizzeranno rapporti che non dovrebbero essere visibili ai loro concorrenti. Dato che questi campi saranno testuali (max 70000 caratteri), stavo pensando di utilizzare la crittografia simmetrica (AES-128) su questi campi. Va bene se tutti gli inquilini condividono la stessa chiave? Posso memorizzare la chiave nel codice sorgente?
Varie
Certificato SSL con caratteri jolly
Poiché tutti gli inquilini si troveranno sullo stesso "server" (cloud: amazon ec2), con ciascun titolare nel proprio sottodominio, dovrebbe essere corretto utilizzare i certificati jolly, giusto? Sto pensando a RapidSSL perché il nostro budget è molto snello (modifica: all'inizio probabilmente solo un'istanza).
C'è qualche altra cosa che ho completamente dimenticato?