Ciao a tutti
Ho costruito un pannello di amministrazione per il sito della mia azienda, capace di permettere l'inserimento dei clienti che serviamo e mostrarli nelle pagine accessibili a tutti relative alla regione dove la persona cerca un nostro rivenditore.
Premetto che ho rispettato passo passo la guida sulla sicurezza in php , per cui le pass sono sotto firma, tutti i paramentri che vengono ricevuti dalle pagine in php vengono puliti da tag e caratteri speciali, eseguo controlli sul referer , se potessi passerei tutto sotto https, tutte le stringhe che vengono processate vengono pulite anch'esse ecc.
es: la persona nella pagina shop.php seleziona come regione veneto -> il nome della regione viene utilizzato per una query sul db per trovare i clienti del veneto
la tabella dei clienti sul db li identifica univocamente grazie ad un id numerico es:
id:125
ragione socialerova
indirizzorova indirizzo,1
userservizi:esmpio
passservizi:iasdldjlkdas87386383ndn //questa è la firma della password per i servizi offerti a quel cliente
adesso oltre che a mostrare semplicemente i negozi voglio offrire a i miei rivenditori alcuni servizi dedicati, come ad esempio una pagina personale sul mio sito .
pensavo dopo un login che controlla user,password,che servizi ha attivi, (ad esempio il cliente ha attivo il servizio minisito ) di creare una variabile in sessione es : minisito="minisitoattivo" poi naturalmente nella pagina di gestione del minisito, se la variabile esiste lui può entrare.
il problema nasce dal fatto che voglio che lui possa entrare e però naturalmente modificare le informazioni (immagini testi ) relative solo al suo id, questo id deve per forza essere passato, ma può comunque da una persona abbastanza abile essere modificato, nonostante contolli sul referer o altro.
alla fine ho pensato di generare una chiave (es casuale esadecimale di 16caratteri) associata all'id ogni volta che il cliente si logga
1)durante il login genero una chiave e la salvo in una tabella nel db assieme all'id
2) ogni volta che le mie pagine richiedono l'id ( esempio per capire quali testi posso modificare ) richiedono anche la chiave e controllano che sia quella giusta.
se l'associazione tra id e chiave fallisce vengo buttato fuori.
teoricamente così all'utente malintenzionato non basta modificare il valore del suo id per accedere ad informazioni di qualcun'altro, ma dovrebbe azzeccare l'associazione tra id e chiave casuale di 16 caratteri esadecimale.
Sto procedendo nella maniera esatta? Mi son perso cose fondamentali ? Sbaglio? LOL meglio chiedere prima a gente più esperta ho pensato. ( Sono ancora in fase di progettazione per quanto riguarda i servizi attivi quindi volendo posso ancora modificare tutto )
GRAZIE MILLE in anticipo per i consigli