On 10/03/16 08:46, Federico "fox" Scrinzi wrote: > Punterei a creare un sistema per cui avere la password o usare il > programma e' esattamente la stessa cosa in termini di privilegi.
Rispondo da "programmatore" più che da esperto di sicurezza (che non sono, nonostante l'interesse e l'averne a che fare comunque) solo per dare un punto di vista in più, forse utile. In generale è plausibile che la password permetta un accesso leggermente migliore, verticale senza limiti. Mi spiego: se quell'utente deve solo poter inserire dei dati e leggere i suoi (quelli creati da quella postazione se, come mi pare di capire, si parla di un ambito in cui conta la postazione e non l'utente fisico) probabilmente nel programma c'è la logica che gli permette di vedere sono determinati record. Questa potrebbe essere aggirata avendo la password. Non potrebbe, però, chi ottenesse quella password leggere campi/tabelle il cui accesso è negato a quella passwpord (quindi sicurezza orizzontale ma non verticale). [Aneddoto, saltabile: anni (troppi, mio figlio nato poco dopo ora è abbondantemente maggiorenne) fa manutenevo assieme ad altre persone i server fra cui ce n'era uno dove girava un'applicazione di gestione paghe: i client erano identificati da un token senza il quale l'applicazione non partiva e che veniva fissato al PC stesso e dava quindi permessi ai diversi operatori, i quali dovevano pensare a controllare l'accesso al proprio PC, anche fisicamente (il direttore del personale chiudeva la porta a chiave, per capirci). Però io ero l'amministratore del server e a un certo punto il ghiribizzo di vedere alcuni dati c'è stato e nulla, avendo le password di admin del DB stesso, mi ha impedito di farlo - ovviamente essendo una proof of concept estrassi i dati (il lordo annuo) miei e di un paio di colleghi che mi avevano dato l'ok, e dell'amministratore delegato, che aveva l'abitudine di far vedere la propria busta paga in giro per "trasparenza". Questo convinse il responsabile IT a chiudere a chiave la stanza dei server... che fu comunque una piccola vittoria vista la leggerezza dell'epoca su queste questioni!!!] L'approccio corretto dal punto di vista della progettazione è diverso: l'accesso (riconoscendo la postazione) non dovrebbe essere fatto usando logica di business locale ma remota. Mi spiego: il programma non dovrebbe avere accesso al database (che è "stupido" o "agnostico" dal punto di vista della logica di business e può solo limitare come scritto sopra) ma tramite dei servizi (*) che implementino in remoto, sul server o su un proxy (in senso di design pattern) comunque non accessibile fisicamente a questi utenti, le relative logiche di business. Questo non significa non riconoscere la postazione ma questo compito sarebbe diverso (occhio, probabilmente una password o un identificatore hardcoded nel programma avrebbe comunque senso - o forse anche un identificatore basato su cpuid e simili numeri di serie hardware). (*) webservice SOAP o REST, oggetti EJB/Corba, server con protocolli dedicati, etc. - le opzioni sono millemila. Ciao! -- ---8<----------------------------------------------fnord------ Piermaria Maraziti [email protected] piermaria.maraziti.it eridia.it fandom.it giocofollia.it wildboar.it hovistocose.it ________________________________________________________ http://www.sikurezza.org - Italian Security Mailing List
