Mysql
 sql >> Database >  >> RDS >> Mysql

È bene usare htmlspecialchars() prima di inserirlo in MySQL?

Come altri hanno sottolineato, #2 è la risposta corretta. Lascialo "grezzo" finché non ne hai bisogno, quindi scappa in modo appropriato.

Per approfondire il motivo (e ripeterò/riassumerò gli altri post), portiamo lo scenario 1 al suo estremo logico.

Cosa succede quando qualcuno inserisce " ' OR 1=1 <other SQL injection> -- ". Ora forse decidi che poiché usi SQL dovresti codificare per SQL (forse perché non hai usato istruzioni parametrizzate). Quindi ora devi mescolare (o decidere) la codifica SQL e HTML.

Improvvisamente il tuo capo decide di volere anche un output XML. Ora per mantenere il tuo modello coerente devi codificare anche per quello.

Successivo CSV - oh no! Cosa succede se ci sono virgolette e virgole nel testo? Più evasioni!

Ehi, che ne dici di una bella interfaccia AJAX interattiva? Ora probabilmente vuoi iniziare a inviare di nuovo JSON al browser, quindi ora {, [ ecc. Tutti devono essere presi in considerazione. AIUTO!!

Quindi, chiaramente, archivia i dati come forniti (soggetto a vincoli di dominio ovviamente) e codifica in modo appropriato per il tuo output nel momento in cui ne hai bisogno . Il tuo output non è lo stesso dei tuoi dati.

Spero che questa risposta non sia troppo condiscendente. Ringraziamo gli altri intervistati.