Addlashes + htmlentities è sufficientemente sicuro?

1

Ho addslashes(htmlentities($userInput)) . Viene inserito nel mio database. (NON un mysql db) È sufficientemente sicuro da xss? Grazie!

    
posta Human 16.09.2014 - 21:43
fonte

1 risposta

3

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:

  • non sfugge ' quindi fallirà per i valori degli attributi a virgoletta singola (aggiungi parametro parametri ENT_QUOTES per correggere)
  • assume il set di caratteri ISO-8859-1 in modo da ottenere un output non funzionante se stai effettivamente gestendo qualcos'altro come UTF-8 (aggiungi il parametro charset da correggere, o, probabilmente più semplice, usa htmlspecialchars che lascia non- Solo caratteri ASCII)
  • L'escape dell'HTML è qualcosa che fai quando stai creando una pagina HTML. Hai bisogno di 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.
risposta data 16.09.2014 - 21:56
fonte

Leggi altre domande sui tag