Recentemente, il mio amico al lavoro voleva ordinare del cibo per il pranzo da un sito web da cui normalmente ordiniamo. Il sito consente al visitatore di diventare membro del sito registrandosi e quindi effettuando l'accesso.
Diventando un membro, possono fondamentalmente tenere traccia dei tuoi ordini, permettendoti di raccogliere "punti bonus". Simile ad un sacco di cose almeno qui negli Stati Uniti, dove è possibile ottenere materiale gratuito basato sui punti.
Perché spesso compriamo da questo sito abbiamo avuto alcuni punti per ottenere del cibo gratis. Tuttavia non abbiamo avuto abbastanza per ottenere un paio di grandi pizze, solo di circa 20 punti. Il ragazzo con cui lavoro è uno sviluppatore principiante che si concentra sulle interfacce utente. Sono un po 'più esperto e conosco un po' di più sul lato server / lato client e sui database. Mentre stavamo ordinando discutevamo di siti come quello su cui eravamo stati disinfettati input e una discussione sui siti che convalidavano i dati sul lato client e server.
Visto che voleva vedere alcune cose, ero in grado di mostrargli da questo sito che sì, in effetti stavano convalidando sul lato client e sul lato server quando ordinavi elementi regolari dal loro menu. Dato che eravamo sulla pagina dei punti bonus in cui puoi aggiungere elementi usando i tuoi punti, ho notato un codice molto discutibile sul lato client. Ho notato alcune chiamate ajax abbastanza strane che stavano semplicemente passando il costo (in punti per un articolo) così come i punti degli utenti registrati. In questo modo potrebbero eseguire un controllo if(userPoints >= neededPoints){ //allow adding for free } else { //don't! }
.
Il problema è che questo può facilmente essere compromesso. Abbastanza sicuro potrei fare la chiamata ajax e permettermi di ottenere l'oggetto anche se non avessi punti. Sicuramente ho pensato che quando ho "inviato" il mio ordine, il server avrebbe preso questo ... quindi il mio amico ha detto di provarlo. Abbiamo provato e ha attraversato ... guidato al posto della pizza e abbastanza sicuro il cibo era fatto. Intendiamoci, ho finito per dare a questo locale ciò che normalmente ci costerebbe ordinare la pizza. Poiché si trattava di una catena locale, non sapevano quale fosse il problema e ho detto loro che avrei contattato la filiale aziendale per porre rimedio alla situazione. Nessuno mi è tornato. Devo continuare a contattare l'ufficio aziendale e inviare e-mail affermando che il loro sito era vulnerabile? Cosa posso fare per trasmettere il messaggio che hanno un problema che deve essere risolto al più presto.
Si noti che il "dupe" esistente a cui qualcuno si è collegato non mi aiuta poiché non posso contattare gli sviluppatori.