Il modello flyweight è una buona scelta di sicurezza per la gestione delle autorizzazioni?

0

Sto progettando un sistema, e ha bisogno di espandibilità futura per l'uso di un sistema di autorizzazioni di qualche tipo. Mi chiedo se il modello del peso mosca sarebbe una buona scelta per implementarlo. Al momento non sono responsabile dell'attuazione, in quanto è solo un prototipo e non stiamo prototipando parti che necessitano del sistema giusto. Tuttavia, a causa della richiesta di estensibilità futura per le parti che richiedono la gestione dei permessi, l'interfaccia deve essere solida. Ciò significa che alla fine sarà un esperimento mentale, piuttosto che una parte reale di ciò su cui devo lavorare. Tuttavia, devo essere in grado di spiegare e giustificare il mio design in quest'area dell'applicazione.

A favore dell'uso di sono che è possibile definire i permessi facendoli simboleggiare attraverso una classe di token, come rappresentato nel modello del peso mosca. Se hai a che fare con centinaia di utenti, ciò semplificherebbe in qualche modo la gestione e l'emissione dei diritti che un utente detiene e i diritti richiesti di cui un utente ha bisogno per un'azione all'interno del sistema; così come l'utilizzo della memoria dei diritti assegnati a tutti gli utenti. Nel sistema che ho in mente, un metodo di fabbrica di qualche tipo assegnerà i diritti necessari al momento della costruzione.

Dato che non ho molta esperienza nel progettare pensando alla sicurezza, ho una paranoica linea di pensiero su cui non posso determinare se sia giustificato, per quanto riguarda la sicurezza. Un puntatore condiviso potrebbe essere dirottato da "intrusi malvagi" per ottenere diritti che non dovrebbero ottenere. Questo è il principale argomento contro l'uso di un peso mosca che continua a tormentarmi, anche se il 'come' non è definito, e non saprei come qualcuno lo farebbe. (nessuna esperienza nella mentalità della sicurezza, o nel suo funzionamento.) Tuttavia, non sto cercando una lezione sulla sicurezza oltre l'uso sicuro dei modelli, a meno che non sia motivato e chiaramente correlato alla domanda)

D: Il modello di peso mosca è un modello adatto per gestire la rappresentazione dei diritti di un utente (o altri tipi di dati "a portata di mano") nella progettazione di un sistema software che deve essere protetto dalla progettazione? L'uso di oggetti volanti come rappresentazione di permessi rappresenta più un rischio per la sicurezza rispetto ad altri pattern (potrei usare anche una catena di decoratori per questo, anche se ciò richiederebbe più memoria) quando si tratta di permessi?

    
posta Onno 31.03.2014 - 00:54
fonte

1 risposta

1

Se stai cercando di progettare l'interfaccia, perché ti preoccupi dei dettagli di implementazione? Anche a livello di realizzazione, penso che preoccuparsi se usare il flyweight sia prematuro. Flyweight è un ottimizzazione dello spazio di memoria, e se non sai quanto spazio stai usando per cominciare, come fai a sapere che ti farà risparmiare spazio?

Non si menziona che tipo di cose si inseguiranno con le autorizzazioni, quindi presumo che sia all'incirca lo stesso numero di bit di lettura / scrittura / esecuzione stile Unix per utente, gruppo e altro. Questo è un totale di 9 bit; a seconda di come lo si affetta, si adatta in 2 o 3 byte. Ogni peso mosca avrebbe bisogno di un puntatore, probabilmente nel range da 32-64 bit o da 4 a 8 byte. Quindi, anche se non hai bisogno di allocare altro spazio per gli oggetti di autorizzazione (e lo faresti), probabilmente stai aumentando i requisiti di memoria.

Ovviamente, questo potrebbe non essere vero se i tuoi permessi sono abbastanza grandi, ma in questo caso, non avresti ancora ottenuto nulla dal peso minimo a meno che non ci fosse una quantità significativa di duplicazioni nei tuoi oggetti di grandi dimensioni. Sai che otterresti molte duplicazioni tra i tuoi oggetti e che sarebbero relativamente grandi? Probabilmente no, se stai ancora cercando l'interfaccia.

Non posso davvero parlarti di sicurezza, ma mi sembra che se qualcuno è penetrato nel tuo sistema al punto che può sovrascrivere un puntatore arbitrario, ha già il controllo sul tuo programma.

    
risposta data 31.03.2014 - 03:41
fonte

Leggi altre domande sui tag