Sto creando un servizio di sapone in cui gli utenti saranno in grado di interagire tra loro. Avranno una lista di contatti dove le persone possono essere aggiunte. Una delle misure di sicurezza (anche altre sono a posto) prevede l'assegnazione di un ID locale a un contatto.
Per rendere chiaro il processo, immagina il seguente scenario:
$ UserA richiede $ UserB per essere aggiunto all'elenco dei contatti di $ UserA. $ UtenteB accetta e $ UtenteA riceve un ID locale da utilizzare come ID utente riferito al contatto. Il database contiene una tabella denominata USER_MAP (LocalID, UserID).
Due domande:
1) Pensi che questo sia un approccio valido quando si ha a che fare con la sicurezza degli ID utente? Se no, perché? 2) Se lo ritieni valido, puoi suggerire una formula per generare detti ID?
Al momento, l'idea per la formula è: ($ UserA_ID + $ UserB_ID) * ($ UserA_RegDate + $ UserB_RegDate)
Considera RegDates come "numero di giorni dal valore di data 0".
Ogni utente potrebbe avere 1..N id locali a seconda di quanti utenti sono disposti ad aggiungere. Un ID locale è locale per l'utente ma globale nello spazio utente, ad esempio per ogni interazione tra utenti viene utilizzato lo stesso ID locale. Per renderlo più chiaro: se $ UserA richiede di vedere il profilo $ UserB, passerà l'id utente locale che verrà mappato a livello del server all'ID corretto.
Giusto per chiarire: il futuro non significa "da molto tempo, forse, chi lo sa", significa piuttosto: "è programmato, voglio farlo, voglio assicurarmi di avere i miei pezzi pronto e ALLORA lo farò ":) Quindi, non è un" forse "piuttosto solo una questione di QUANDO.
Apparentemente qualcuno ha problemi a comprendere la logica dietro l'approccio di un id locale. Un paio di idee che possono aiutarti a capire perché è una buona idea (secondo me):
-
Se il tuo ID è locale anziché globale, hai solo l'accesso alle tue risorse / contatti. Utile, ad esempio, per evitare di accedere in modo programmatico a un profilo che non ti è permesso vedere. Ciò con terze parti può essere un problema, specialmente in caso di usi scorretti
-
Se il tuo ID è locale, puoi usarlo come scorciatoia per i dati locali invece di dover accedere all'account originale. L'elenco dei contatti potrebbe, ad esempio, contenere alcuni dei dati originali che non cambieranno.
-
Se hai un ID locale è molto più facile "tagliare il filo", perché tutto ciò che devi fare è eliminare uno o due record. Supponi che un utente desideri eliminare un contatto. Tutto quello che dovrò fare è rimuovere al meglio due record, tutti gli altri dati rimarranno intatti e semplicemente filtrato dalle query.
Meglio ora?
Grazie per il tuo tempo!