Closed sablaireau closed 8 years ago
sì..domani me ne occupo
Cioè, di norma il campo email viene già controllato dal client prima dell'invio, quindi nel caso normale vi arriverà sempre una email corretta.
Tuttavia, come ha notato @sablaireau è possibile aprire il dev tool del browser e modificare i campi (qualsiasi) del JSON con la ricetta. Per cui – in casi rari come questi – sarebbe opportuno gestire dei controlli anche nel lato server.
Aggiungo ancora una cosa: per le date, per esempio, se non mi sbaglio, il DB è in grado di rifiutare quei dati che non siano delle date. Non so come si faccia, ma suppongo che non debba essere una cosa difficile. Comunque non me ne intendo. 😁
Per quanto riguarda la validazione delle email, abbiamo trovato questa REGEX che funziona molto bene:
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
dove re
è la REGEX in questione, la funzione <regex>.test(<string>)
in JavaScript ritorna false o true in questo caso.
Sicuramente ci sarà qualcosa di simile anche per il Java.
ok..provo a metterla..ma quindi non volete che testo che l'email esista davvero (ammesso che si possa fare), giusto?
In che senso testare che l'email esista davvero?
che se metto ciao@gmail.com
, l'email è nel formato corretto, ma probabilmente non esiste..
secondo me questo non è un grosso problema..se l'utente mette un email fasulla, semplicemente non riceverà mail l'email di attivazione e il suo account non verrà mai attivato.
Siete d'accordo?
Ti faccio esempi di e.mail che accettiamo come formato:
o@l.uj
o.l.s@l.uj
o.s@l.s.uj
Formato non valido: Es:
o.s@l.s.s
Poi puoi anche fare altri controlli o cambiargli :)
Si, non c'è bisogno di testare che la mail esista davvero... chi ci rimette, sarà colui che vorrà registrasi! XD
Quindi direi che va bene solo controllare il formato con quella regex per esempio.
uhm sperando che non usi il nostro servizio per fare un attacco di denial email XD
Già, speriamo di no!
Allora se vogliamo fare le cose sicure dovremmo mandare un link a quel e.mail affinché venga attivata quel servizio su quel account oppure si deve registrare con quel email (la seconda mi sembra più potente come soluzione ma meno flessibile)
ma la nostra soluzione è proprio la prima...mandiamo il link a quell'email, se l'utente lo riceve e lo preme, il servizio viene attivato su quell'account (email)
No, intendevo dire che nel action di gmail posso inserire qualsiasi e.mail e quindi mandare il risultato della ricetta (meteo per domani ad esempio) ad una persona qualsiasi senza che essa ne sappia nulla solo per dargli fastidio
Questo lo puoi fare anche nel vero IFTTT. È una possibilità lecita.
eh sì..anche perchè..come facciamo a controllare questo caso? Cioè..non possiamo sapere l'associazione di un utente con tutte le sue possibili email..cioè...come facciamo a sapere che l'email che inserisce non è una delle sue? Dobbiamo telefonargli e chiedergli :P Scherzo ovviamente!
No basta dirgli che si deve registrare anche con quella e.mail, ovviamente le mie sono solo locubrazioni mentali :) Mi stavo facendo un attacco da solo ahahhha o.k. lascio perdere :)
ahahahah..si direi che questi casi possiamo lasciarli stare
ottimo :)
allora..ho provato a rinforzare il controllo dell'email..tuttavia la vostra regex non me l'accettava, ho dovuto metterne un'altra, che però mi sembra molto più corta della vostra.. provate a vedere se funziona, io non so come fare a testarla..
devo aprire il terminale?
Proviamo ad usare regex101! 😊
Nel commento che ho cancellato avevo sbagliato link 🙄
mmm..sembra che la regex che ho trovato io non funzioni.. adesso vedo di sistemarlo
ho provata a sistemarla (ho committato di nuovo)..il problema era il carattere "\" in java..quindi ho dovuto cambiare leggermente la vostra regex in modo che java me lo accettasse (spero di non avere fatto pasticci con la regex..cosa molto probabile). Ora per testarla dovrei cambiare il json in rete come facevate voi...come faccio?
allora è semplice
fai una ricetta e usa gmail action
metti una e.mail giusta se no ti da errore poi premi il tasto submit e fermati e apri la console da del browser
quando sei alla console del browser digita modulinoj2 cambia quello che ha in pancia
ok..ci provo..quindi devo mettere dei breakpoint?
no no nessun break point fermati quando sei alla descrizione non premere il tasto submit della descrizione
il model della descrizione deve essere aperto ci puoi anche scrivere dentro se ti fa piacere ma non premere il tasto del model della descrizione
No, nessun breakpoint! @sablaireau intendeva dire:
Ah ma cacchio..sto sbagliando tutto allora!! Io stavo mettendo i controlli al momento della registrazione..che l'email che l'utente inserisce sia corretta..
va bene anche li
più controlli fai meglio è
devo aggiungerli anche là
ma forse è meglio non ho testato quella parte mi sono fermato alla creazione della ricetta
in quella zona è più complicato, tuttavia se c'è un server resistente forse è meglio
In realtà, tutto questo, ne parlavamo io e @sablaireau ieri, si poteva benissimo evitare a priori, utilizzando le variabili interne di AngularJS che non sono accessibili dal tool del browser.
Dopotutto, modulinoj1
e modulinoj2
sono due variabili globali... e quindi accessibili da chiunque. 🙄
Io dico, ormai è fatto così, per poter proteggere queste variabili si doveva usare AngularJS fin da subito e ora cambiare tutto è molto costoso in termini di tempo. Quindi io tralascerei questo problema e andrei avanti su altre cose.
sì sì..ma i controlli è sempre meglio farli anche sul server in ogni caso..adesso cerco di aggiungerli altrove.
Ragazzi..non trovo più il link alla "spiegazione del sito" che volete mandare al prof quando gli chiediamo l'appuntamento..me lo potreste passare per favore?
In ogni caso..la regex scritta così non funziona! Vado a mangiare anch'io, dopo ci penso
Ragazzi..non trovo più il link alla "spiegazione del sito" che volete mandare al prof quando gli chiediamo l'appuntamento..me lo potreste passare per favore?
La pagina che cerchi potrebbe essere questa: https://cristiano-c.github.io oppure puoi guardare anche qui.
ok grazie..in realtà ho visto che non va bene.
Perchè volevo modificare l'email di attivazione dell'account, scrivendo una cosa del tipo:
If you didn't try to register to our site, please ignore this e-mail!
e mettere il link al nostro sito (anche per pubblicità :P)..però è meglio se metto direttamente il link alla home del nostro sito.
Ovviamente..se poi non vi piace, possiamo di nuovo toglierlo.
Adesso l'email è così..ditemi se vi piace. Premendo su "ifttt polito" si va sulla home del nostro sito
Bella!!!! Troppo bella complimenti!!!!
È stupenda!!! 😸
Una 🏅per @simonaPr!
😄
Ahahaha..bien..sono contenta che vi piaccia :) Adesso cerco di fare la parte difficile: sistemare questa regex..
Se ne trovano tanto in giro di regex per le email, si possono testare tutte utilizzando regex1010.
Le regex sono indipendenti da qualsiasi piattaforma.
eh lo so..ma java non accetta il carattere "\"...ho provato a sistemarla mettendo da qualche parte "\", ma ovviamente ho fatto casini perchè la registrazione così non funziona più. E su regex1010 non posso testarla, perchè se la metto in una forma accettabile per Java, lì ovviamente non funziona più
1) Ho provato ad inviare un e.mail falsa dalla gmail action e me l'ha accettata. L'indirizzo era
pippo
. Quindi si dovrebbe usare più angular per la parte client quindi meno variabili globali e mettere più controlli sulla parte server. Ho usato un googleChrome con la console e ho cambiato il campo email del json ed è stata inviata.2)Inoltre per ogni campo dalla parte client eseguiamo dei controlli di validità come ad esempio per la temperatura (-70/+70) si dovrebbero anche mettere sul server o ci sono già?