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.