Newsgroup: it.comp.www.php
Titolo: htmlentities e inserimento nel database...

Ho una curiosità da porvi...preferite eseguire htmlentities sul dato 
prima di metterlo nel database o successivamente?
Ciao
Enrico

 prima di metterlo nel database o successivamente?
Mah... guarda... solitamente io questo genere di azioni le faccio
prima...
Semplicemente perché se le fai dopo:
- devi ripeterla ogni volta che viene eseguito lo script;
- se c'è un ciclo while, devi ripeterla parecchie volte quando viene
eseguito.
Insomma, non so se mi sono spiegato...


wrote:

non serve a nulla filtrare il dato, il db lo fa gia in automatico



No!
Il dato non và modificato in alcun modo prima di metterlo nel database.  
Perchè così facendo non è piu' possibile o cmq difficile effettuare  
ricerche nel database per il dato specifico. E cmq perdi la possibilità di  
usare il dato così com'è nell'invio di una mail in formato testo o altri  
utilizzi che prescindono dall'html.
L'unica cosa da fare prima di inserire il dato nel db è passarlo con (se  
il db è mysql) mysql_real_escape_string o mysql_escape_string, per motivi  
di sicurezza.
Questa è la prassi per chiunque conosca un minimo di php.
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

 prima di metterlo nel database o successivamente?
La seconda che hai detto, specialmente se poi quei dati devono essere 
utilizzati in ambiti dove l'input o l'output non è html.
-- 
Jax

 ricerche nel database per il dato specifico.
Giusto, non avevo valutato la necessità della ricerca, sorry! -.-

 Giusto, non avevo valutato la necessità della ricerca, sorry! -.-
Nulla di cui scusarsi, è una di quelle cose che è appunto giusto chiedere,  
perchè te ne accorgi solo poi ed è piu' difficile rimediare.


 Tac
Ciao!
Grazie a tutti per le risposte!
Enrico

 di sicurezza.
che non serve neanche piu' ora perche' lo fa gia in automatico con
l'opzione "magic_quotes" in php.ini
ti consiglio di non mettere filtri ma bensi un check che verifica se
l'opzione e' stata rimossa dal file di config e ti manda una mail al
volo per dirtelo! ;)



A dire il vero magic_quotes_gpc è considerata cattiva pratica ed è stata  
deprecata dagli autori. Sparirà dalla prossima versione di php.
Oltre a questo non previene una sql injection fatta come si deve. A conti  
fatti complica il codice invece che semplificarlo.
Da un bel po' di tempo è settata ad off di default.
Noto un po' di confusione nei post riguardo al flusso che dovrebbero  
seguire i dati provenienti dal db o dall'utente.
In linea di massima si dovrebbe cercare di avere nelle proprie variabili  
il dato "puro" ed applicare filtri e validazioni solo immediatamente prima  
dell'output.
Quando si memorizza su db si deve cercare di fare in modo di memorizzare  
il dato puro, senza filtri alcuni. L'escape và effettuato per evitare che  
caratteri speciali facciano fallire le query o le modifichino.
Quando un dato arriva dall'utente và ripulito dal magic_quotes_gpc (nel  
caso sia attivo) e validato per verificare se corrisponde a quello che ci  
si aspetta.
Questo a grandi linee.


che non serve neanche piu' ora perche' lo fa gia in automatico con
l'opzione "magic_quotes" in php.ini
Precisazione:
magic_quotes è per i dati in ingresso via $_GET, $_POST ... allo script non
per quelli da scrivere nel DB.

 wrote:

questo e' vero su 
php.net
 ce' guerra di religione per i magic_quotes
perche' gia' in php sono presenti funzioni come add slashes etc.. che
fanno meglio questa funzione conservando piu' prestazioni; stiamo
parlando di livelli tecnici molto alti. Credo che per un sito standard
rimanga tuttora la soluzione piu' equilibbrata ed utilizzata.

 per quelli da scrivere nel DB.
grazie per la precisazione giusta
ma, sfido chiunque a farsi un autogoal usando query malsane.. l'utente
puo' interagire con il sistema solamente con $get e post per cui ecco
spiegato il motivo di come mai solo esse sono filtrate.

 rimanga tuttora la soluzione piu' equilibbrata ed utilizzata.
La differenza in prestazioni è così piccola da essere ininfluente, sia a  
livelli bassi che molto alti.
Magic quotes è comunque insicuro e non è una buona pratica.
Sarà anche equilibrata (ma io sono convinto del contrario) ma sicuramente  
piu' utilizzata da tempo.
Per fortuna che tra poco la eliminano del tutto.
