Ciao Mi chiedevo quando è il luogo appropriato per utilizzare htmlspecialchars(). È prima di inserire i dati nel database o quando li si recupera dal database?quando utilizzare la funzione htmlspecialchars()?
risposta
Si dovrebbe chiamare questo metodo solo quando si fanno eco i dati in HTML.
Non memorizzare codice HTML con escape nel database; renderà le query più fastidiose.
Il database deve memorizzare i dati effettivi, non la sua rappresentazione HTML.
Grazie. Ma quando provo a memorizzare tag PHP nel database "" non sarei in grado di farlo a meno che non utilizzi in anticipo htmlspecialchars(). – khr2003
@ khr2003 non memorizzare php nel db, non è mai una buona idea. –
Sono d'accordo ma faranno parte di bbcode quando inseriremo un post. – khr2003
È possibile utilizzare htmlspecialchars
OGNI tempo di output del contenuto all'interno dell'HTML, quindi è interperted come contenuto e non HTML.
Se si consente il contenuto di essere trattato come HTML, si è appena aperto il varco ai bug al minimo e gli hack XSS totali nel peggiore dei casi.
Stai fraintendendo la domanda. – SLaks
Salva la parte esatta che l'utente inserisce nel database. quindi quando lo si visualizza al pubblico, utilizzare htmlspecialchars()
, in modo che offra una protezione xss.
Ma lui sta chiedendo ** PERCHE '** di farlo ?? Non hai fornito un motivo nella tua risposta. Si prega di prendere in considerazione la modifica. –
Guida - Come usare htmlspecialchars() in PHP
Per cominciare bisogna capire 1 semplice concetto: Render.
Che rendering è? Render è quando il codice HTML trasforma
<b>Hello</b>
a audace come questa Ciao. Questo è il rendering.
Quindi ... Quando utilizzare la funzione htmlspecialchars()?
Ovunque si desideri visualizzare i contenuti HTML. Per esempio, se si utilizza JQuery e si esegue questa operazione:
$("#YourDiv").html("<b>Hello</b>");
Il contenuto div sarà Ciao. Ha reso il testo in HTML.
Se si desidera visualizzare il messaggio in questo modo (è stato scritto dall'utente):
<b>Hello</b>
devi mettere:
$("#YourDiv").text("<b>Hello</b>");
In questo modo il Ciao non sarà mai reso.
Se si desidera caricare il messaggio (come ha scritto dall'utente) in una casella di testo, textarea, ecc ... Dovete mettere:
<input type="text" class="Texbox1" value="">
<script>
$(".Textbox1").val("<b>Hello</b>");
</script>
che visualizzerà
<b>Hello</b>
Dentro la casella di testo senza problemi.
Conclusione:
Che cosa mai dati l'input dell'utente nelle vostre forme, ecc ... salvare i dati come normalmente. Non utilizzare alcuna funzione. Se l'utente ha inviato 12345 salva come è. Non filtrare nulla. Devi solo filtrare quando hai intenzione di mostrare i dati nella pagina agli utenti. TU, SOLO decidi se vuoi rendere o meno ciò che l'utente ha scritto. *Ricordatelo.
Saluti!
dopo se richiesto. –