basta gestire correttamente gli apici e i doppi apici
basta gestire correttamente gli apici e i doppi apici
basta usare mysql_escape_string o mysql_real_escape_string ?[supersaibal]Originariamente inviato da skidx
basta gestire correttamente gli apici e i doppi apici [/supersaibal]
io i dati provenienti da form li tratto così
basterà? ho visto che c'è anche una htmlspecialchars o qualcosa di simile ma non ho capito bene cosa faCodice PHP:$text = stripslashes($text);
$text = mysql_escape_string($text)
Sotto la panza la mazza avanza.
stripslashes() usalo soltanto se hai magic_quotes_gpc attivo nel php.ini (di default è attivo)[supersaibal]Originariamente inviato da Caleb
io i dati provenienti da form li tratto così
basterà? ho visto che c'è anche una htmlspecialchars o qualcosa di simile ma non ho capito bene cosa fa [/supersaibal]Codice PHP:$text = stripslashes($text);
$text = mysql_escape_string($text)
ed utilizza mysql_real_escape_string() quando questa è disponibile (dalla versione 4.3 in poi).
attenzione che queste funzioni non gestiscono comunque i caratteri % e _ che hanno un senso nelle query con la clausula LIKE
htmlspecialchars e htmlentities entrano in gioco quando devi produrre un output che può contenere caratteri html e non li vuoi spedire come tali.
ad esempio se in questo forum scrivo "bold", non vedrai una scritta in grassetto, ma vedrai i tag per esteso, in quanto < diventa & lt; e cosi via
Tutti hanno bisogno di credere in qualcosa.
Io credo che mi farò un'altra birra.
io fin'ora non avevo nessuno protezione del genere
eppure ho provato ad inserire
Nick' OR 1=1 --
nel campo del login e ho provato in svariati modi ma non c'èra nessun risultato, sembrava riuscisse a proteggersi tranquillamente.
Cmq ora ho inserito le funzioni di sicurezza lo stesso!![]()
http://codecanyon.net/category/all?ref=Manuelandro
And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
memories to be made
Se vuoi divertirti sul tuo db prova su mysql.user:
dove la parte ingrandita e' quella del form e le virgolette che racchiudono sono messe da te.codice:SELECT * FROM `user` WHERE user = 'gnugnu' AND PASSWORD = 'inculo' or 1 = 1 ora pensa ad un form non protetto o con register_globals ON.... input type=text user -> gnugnu input type=password -> ' OR 1 = 1 -- diventera': SELECT * FROM `user` WHERE user = 'gnugnu ' AND PASSWORD = '' or 1 = 1 -- '
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
piero ho provato con uno script dove ho un form di login:
se gli metto ' OR 1 = 1 -- nel campo password e qualsiasi cosa come user mi dice semplicemente password errata perchè faccio attraversare la password a md5 prima di fare la select
invece mi va in errore di sintassi per la query se metto ' OR 1 = 1 -- come user, andrebbe anche bene ma vorrei visualizzare una cosa del tipo "utente non valido" o qualcosa di simile... che tipo di controllo devo fare sul campo utente? obbligo gli utenti a non registrarsi con nomi con apici eliminandoli dalla $password? (se sì con che funzione?)
Codice PHP:$user = isset($_POST['user']) ? $_POST['user'] : '';
$password = isset ($_POST['password']) ? $_POST['password'] : '';
$password_md5 = isset ($password) ? md5($password) : '';
// codice form
$q_login = mysql_query(" SELECT * FROM users WHERE user='$user' AND password='$password_md5' ") or die ("Query non valida: " . mysql_error());
Sotto la panza la mazza avanza.
se vuoi fare in modo che l'utente possa usare gli apici nel form, allora prima della query devi passare le variabili a mysql_escape_string (o meglio ancora real_escape), come detto prima.
Sennò se vuoi impedire quei caratteri fai un classico controllo al form prima di qualsiasi query.
ok funziona
ho guardato sul manuale e non riesco a capire cosa aggiunge mysql_real_escape_string.. che cos'è quel facoltativo identificativo di connessione di cui parla?
Sotto la panza la mazza avanza.
Dovrebbe essere la connessione al database, quella stabilita con mysql_connect. In quel modo sei sicuro che usi il set di caratteri corretto (che nelle tue pagine potrebbe essere diverso).[supersaibal]Originariamente inviato da Caleb
ho guardato sul manuale e non riesco a capire cosa aggiunge mysql_real_escape_string.. che cos'è quel facoltativo identificativo di connessione di cui parla? [/supersaibal]