"Basta sanificazione" dipende molto dall'ambiente di cui si parla. La sanificazione per MySQL dovrebbe essere considerata completamente separata dalla sanificazione per l'output Web e dovresti gestirli separatamente per evitare molti problemi.
Disinfezione per MySQL
mysql_real_escape_string()
sanificherà un dato e renderà sicuro l'inserimento all'interno di una query SQL.- Qualsiasi altro tipo di dato dannoso, come i tag HTML all'interno della stringa, dovrebbe essere assolutamente ignorato. Cercare di manipolarlo qui ti porterà a mal di testa mentre provi a "non manipolarlo" in seguito dopo averlo rimosso dal database. I "dati web" errati non possono danneggiare il tuo database.
Disinfezione per l'output
htmlspecialchars($val)
al momento dell'output impedirà il rendering di eventuali tag dannosi, perché<
e>
i caratteri vengono convertiti nelle loro rappresentazioni di entità e non visualizzati come delimitatori di tag.- Utilizza il
ENT_QUOTES
modificatore se stai emettendo qualcosa che si trova all'interno dell'attributo citato di un elemento HTML, come<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />
Dovrebbe essere tutto ciò di cui hai bisogno, a meno che tu non abbia requisiti speciali. strip_tags()
non dovrebbe davvero essere usato per la sanificazione, poiché può essere ingannato con HTML mal formato. La sanificazione è un obiettivo degno e, se riesci a mantenere separati i tuoi contesti, incontrerai meno problemi con la manipolazione dei dati tra di loro.