|
Rimanendo sempre in tema di sicurezza, queste due funzioni sono una vera e propria manna dal cielo per proteggere input maligni da parte degli utenti.
Supponiamo di essere nel seguente scenario: abbiamo accesso ad un DBMS dove noi immagazziniamo un testo che è stato recuperato facendo leggere al nostro script una pagina web il cui indirizzo ci è stato passato dall'utente.
Per far ciò supponiamo di usare la seguente query:
INSERT INTO tabella (testo) VALUES ('$testo');
dove $testo è una variabile PHP che contiene il testo della pagina HTML letta.
Se $testo contenesse la stringa
prova'); DELETE FROM tabella WHERE (testo LIKE '%' OR testo = ';
rischieremmo danni al nostro DBMS. Infatti quell'apice dopo "prova" chiuderà il primo apice della nostra query e potrebbe causare pertanto danni perché la query risultante (così come la vedrà il PHP) sarà:
INSERT INTO tabella (testo) VALUES ('prova'); DELETE FROM tabella WHERE (testo LIKE '%' OR testo = ';');
che cancellerà tutti i valori contenuti nella tabella di nome "tabella"
Come ovviare a questo spiacevole inconveniente? Semplicemente utilizzando la funzione addslashes() che tramuta magicamente tutte le occorrenze di ' in \' (in gergo si dice che la stringa viene "escapata"), evitando quindi che i problemi suddetti si presentino.
La funzione stripslashes() esegue l'opposto.
|