|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2007
Messaggi: 209
|
Sicurezza nella creazione sito e-commerce
Ciao a tutti, avrei bisogno di un consiglio visto che è la prima volta che realizzo in php un sito di e-commerce senza seguire una guida specifica e soprattutto senza usare cms.
Per la realizzazzione del carrello ho usato le sessioni. Ora io non so se in termini di sicurezza ho omesso qualcosa e vorrei a tal proposito capire se ci sono da fare dei cambiamenti per evitare sorprese. L'unica cosa che ho fatto è un controllo sulla pagina che mi invia l'ordine nel database, in pratica se nella stessa sessione mi è già arrivato l'ordine nel database ma il cliente deve ancora pagare con la carta , non permetto di aggiornare la pagina (perchè il carrello a questo punto sarebbe vuoto) ,e nè di farne inviare un altro da un'altra finestra del browser, costringo il cliente a finire tutto il procedimento nella stessa finestra e se vuole creare un nuovo carrello, deve prima concludere quello precedente o almeno azzerare il carrello attuale. Non ho usato nessun sistema di crittografia e non so neache se sia il caso, perchè dovrebbe essere nel mio caso Paypal a usare sistemi di sicurezza penso. Il sito sembra funziona bene, ma come faccio a sapere se ho realizzato un sistema sicuro prima ancora che si passi il totale della somma del carrello a paypal? Se qualcuno vuol vedere online la bozza del progetto posso anche fornire l'url. Grazie. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Ma questo è un mio personalissimo punto di vista che puoi prenderlo come spunto tu per aumentare il livello di sicurezza; rispondendo alla tua domanda realizzerei TUTTO il carrello e il CHECKOUT sotto crittografia SSL (https). Per quanto riguarda le sessioni nel carrello è l'unica soluzione fruibile sinceramente, che ti occupa poco tempo e sono abbastanza affidabili; creare delle tabelle temporanee sarebbe troppo esoso in termini di memoria (usi MySQL sicuramente...) e quindi le lascerei da parte. Spiega bene il procedimento che hai adoperato nella realizzazione del carrello, dall'inserimento del prodotto al checkout. Quando e come controlli la disponibilità del prodotto? Per PayPAL puoi andare tranquillo poi. |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2007
Messaggi: 209
|
In pratica ho creato un' array sessione dove ogni volta che un utente clicca sul pulsante "Aggiungi al carrello", tramite il metodo post incremento l'array sessione e la somma da pagare. Il totale lo inserisco poi in un'altra sessione. Quando l'utente ha terminato lo shopping, entra nella pagina carrello, complila un form per i suoi dati e clicca sul pulsante acquista. Sempre con il metodo post mi arriva l'ordine nel database e a questo punto svuoto la sessione carrello, tuttavia se il pagamento è con carta di credito nella pagina successiva appare il pulsante di paypal. I valori passati a quest' ultimo sono i due array sessione, e cioè gli articoli e l' importo totale. Quando Paypal mi avvisa che il pagamento è avvenuto, aggiorno un campo nel database che mi serve per identificare un ordine ormai pagato.
Per quanto riguarda la disponibilità del prodotto, non ho per ora l'esigenza di prenderlo in considerazione. Io non ho usato nessun https per creare il carrello, e sinceramente non l' ho mai fatto e non so come fare. E' rischioso in questa maniera? Cosa potrebbe succedere? Ultima modifica di fabry78 : 30-06-2010 alle 09:31. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Quando andrai ad analizzare la disponibilità dei prodotti (cosa che dovresti tenere in considerazione fin da subito, se due utenti acquistano contemporaneamente, cosa succede?) dovrai lavorarci con molta attenzione. Per HTTPS basta che attivi un certificato SSL su Apache; a questo punto per 20 dollari conviene comprarne uno certificato... (per modo di dire... |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jan 2007
Messaggi: 209
|
Ma poi quale sarebbe il rischio? Infondo il pagamento avviene su paypal in https. In dati passati a pay pal con il metodo post sono gli articoli, la somma totale e i dati del cliente. Possono essere manipolati in qualche modo prima di arrivare a paypal?
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Il problema non è la loro manipolazione, ma peggio, una perdita dei dati sensibili... ovvero violazione dei dati personali da parte di qualche utente malintenzionato. Poi oddio, io ti sto allarmando per niente, non ti accadrà mai, ma prevenire è meglio che curare... e poi hai chiesto tu tecniche aggiuntive per 'mettere in maggiore sicurezza il tutto'. |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jan 2007
Messaggi: 209
|
ah si certo, e ti ringrazio. Mi hai dato 2 input. Il primo riguarda la possibilità che due persone ordino contemporaneamente lo stesso prodottoe quindi sarebbe un problema, e l'altro la possibilità di inserire un certificato ssl se non ho capito male.
Per il primo problema che mi consigli? Si mette in attesa una richiesta sql? Poi mi piacerebbe capire come implementare questo sistema di sicurezza ssl, sai indicarmi una guida? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
paypal offre gli script necessari se non sbaglio e quelli sfruttano ssl
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jan 2007
Messaggi: 209
|
Paypal si, ma durante la gestione del carrello e l'invio dei dati del cliente sul mio database, non c'è paypal, io alla fine passo a paypal la somma totale e alcuni dati dell' utente,(come il nome , il cognome e il suo indirizzo email). La mia preoccupazione quindi è prima che si apra la pagina di paypal, non vorrei che i dati inviati via post o le sessioni vengano fossero manipolate in qualche modo.
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
https lo dovresti usare anche tu nelle pagine di checkout...
Le sessioni non te le può toccare nessuno, sono sul server. |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Basta che googli, trovi il mondo. Ricordati che i certificati ssl puoi generarli tu stesso con ssl-cert sul server, peccato che non essendo 'trust' quindi riconosciuti alcuni Browser (Firefox e Safari) 'avvisano' l'utente e quindi è sgradevole. I certificati SSL 'certificati e riconosciuti' (perdona il gioco di parole) costano dai 20 $ ai 1000 $ annuali; dipende sempre l'uso che devi farne. Per il primo punto... o fai un lock sulle tabelle (il che ti obbliga di avere i permessi sul database, con l'utente, cosa non ideale) oppure ti crei una tabella temporanea dove metti ID prodotto, quantità virtuale. Punto. Quando la quantità virtuale (e la devi controllare ad ogni pagina dal checkout al pre-pagamento) è superiore alla disponibilità, procedi, altrimenti no. Successivamente a pagamento completato aggiorni la quantità reale. PS. Cionci l'SSL andrebbe usato ovunque, anche sul normalissimo modulo contatti |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Nome, Cognome, E-mail, TELEFONO, P.IVA e CF, sesso, indirizzo o altri dati non sono ritenuti dati sensibili o personai? Forse bisogna rivedere il 'rango' dei dati riconosciuti come 'sensibili' e 'personali'. Per me e per la legge Italiana lo sono. Per te non lo so. Che poi l'SSL appesantisca le connessioni, le renda più lente, ecc. è un altro conto; preferisco metterci 2 secondi in più a caricare una pagina che rischiare che i miei dati vengano passati in chiaro. Ma IMHO, questione di gusti e priorità.
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK Ultima modifica di dojolab : 30-06-2010 alle 14:40. |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
EDIT: lascerei però questo discorso a chi è ferrato in materia di Privacy.
SSL tutta la vita. |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
A parte l'SSL che ti è già stato consigliato ti raccomando un modo per verificare che la sessione non sia manipolata. Nella fattispecie un modo molto sicuro di fare tutto sarebbe salvare nella sessione esclusivamente dei codici identificativi di prodotto. Al momento del checkout avresti così l'occasione non solo di verificare la disponibilità (pensa a due clienti che scelgono lo stesso prodotto, con disponibilità 1: solo il primo a fare il checkout dovrebbe avere l'occasione di arrivare al pagamento), ma anche di fare la somma effettiva dei prezzi senza temere manipolazioni da parte dell'utente; il tutto, naturalmente, essendo eseguito sul server, non comporterebbe particolari rischi.
In alternativa potresti sempre usare una forma di hashing (HMAC?) dei dati di sessione e verificare l'hash alla fine della procedura, anche se la soluzione è certamente meno sicura ed efficace. Userei poi, fossi in te, uno strettissimo controllo su classici quali SQL injection e XSS, poiché un'SQL injection - ad esempio - consentirebbe ad un cliente malintenzionato di garantirsi uno sconto, mentre un'XSS potrebbe compromettere la sicurezza dei dati personali di un cliente legittimo e portare ad acquisti non autorizzati con tutte le conseguenze del caso. |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Occorre invece garantire, lato server, che non possano verificarsi attacchi di tipo session riding Ultima modifica di nuovoUtente86 : 30-06-2010 alle 15:25. |
|
|
|
|
|
|
#17 | ||
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Quote:
|
||
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
.Per i moduli di contatto, dipende sempre dai casi. Giusta cosa sulle sessioni. |
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Coerentemente sarebbe opportuno far viaggire il sessionID (e di conseguenza tutti i messaggi HTTP) su un canale criptato, in quanto intercettando si ha pieno accesso alla sessione, con le conseguenze del caso, ma per motivi di performance nessuna web-application (anche delle note multinazionali dell' e-commerce) viaggia completamente su TLS
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
La gestione del sessionID è ben altra cosa. Il controllo del referer è d'obbligo... Prima di tutto bisognerebbe usare il metodo GET il meno possibile e nella chiusura delle transazioni bisognerebbe memorizzare il referer che ci si aspetta o una onetime password all'interno della sessione, per poi verificarla quando arriva la richiesta effettiva che chiude la transazione. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:08.












.








