Ho addslashes(htmlentities($userInput))
. Viene inserito nel mio database. (NON un mysql db) È sufficientemente sicuro da xss? Grazie!
Che cos'è addslashes
per? Non ha alcun vantaggio rispetto all'iniezione HTML poiché non rimuove i caratteri speciali per HTML.
Se è inteso come protezione contro l'iniezione SQL, è inefficace, specialmente per i database non MySQL che non usano nemmeno il backslash come escape nei valori letterali delle stringhe SQL. È necessario utilizzare esclusivamente query parametrizzate per ottenere dati in query SQL senza problemi di SQL injection.
htmlentities
è OK contro l'iniezione nel contenuto di testo HTML e nei valori degli attributi con doppia citazione. Ma:
'
quindi fallirà per i valori degli attributi a virgoletta singola (aggiungi parametro parametri ENT_QUOTES
per correggere) htmlspecialchars
che lascia non- Solo caratteri ASCII) htmlspecialchars()
ogni pezzo di testo quando passi a HTML perché è il punto in cui sai che il testo ha bisogno di essere sfuggito. Non inserire l'escape HTML tra riceverlo e scriverlo nel database, questo è completamente il momento sbagliato.