Domanda

Se sfuggo al codice perché voglio che venga visualizzato come codice effettivo in html (ad es. per un frammento di codice di esempio), salvarlo nel database e quindi tirarlo indietro nell'editor (una pagina html), è visualizzato come html, in contrapposizione al testo con escape.

Il mio problema sorge quando includo un tag textarea nel testo perché chiuderà prematuramente l'area di modifica e taglierà il resto di ciò che scrivo quando viene salvato (o più se non chiudo il tag).

/ p>

Quindi la mia domanda è: è questo comportamento previsto da parte del browser? - gt &; Quindi devo sfuggire al testo (forse codice e pre-tag)? ogni volta che voglio modificarlo? O sto facendo qualcosa di sbagliato?

* Nota Sono l'unica persona che lo utilizza ed è principalmente solo per l'apprendimento, quindi non sono preoccupato per l'aspetto della sicurezza tanto quanto il modo in cui ho bisogno di controllare il mio html quando lo uso in un browser e ho si comporta in modo previsto.

È stato utile?

Soluzione

@Bob: htmlentities () non è lo stesso di htmlspecialchars ()

htmlentities () convertirà ogni carattere che ha un codice ASCII in quel codice. htmlspecialchars () farà solo quelli speciali in HTML, come & amp ;, virgolette e < o >

Questa è una grande differenza che può rompere alcune cose e può anche causare un risultato enorme quando si usa htmlentities ().

Altri suggerimenti

Nella mia esperienza, devi fare una sorta di fuga di caratteri speciali. In PHP la funzione è htmlspecialchars (). Non conosco altre funzioni. Ma la ricerca mostrerà correttamente i caratteri codificati nell'area di testo.

La maggior parte delle lingue basate sul web avrà alcune funzioni di libreria per sfuggire ai caratteri interpretati in HTML, quindi controlla la documentazione per la lingua che stai usando.

Come ha detto Darryl, html_entities () (che è un alias per htmlspecialchars ()) farà il trucco in PHP.

È questo comportamento previsto da parte del browser? Sì, il browser interpreta il tuo codice HTML (senza escape) come tag HTML appartenenti alla pagina e agisce su di essi.

Quindi devo sfuggire al testo (forse codice e pre-tag)? Sì, come ha detto Darryl Hein, usa htmlspecialchars (). Verranno visualizzati correttamente dal browser e non è necessario & Quot; unescape & Quot; i dati non appena vengono modificati.

... sto facendo qualcosa di sbagliato? È necessario ispezionare qualsiasi input proveniente dalla propria applicazione o in uscita e verificare l'eventuale presenza di caratteri che abbiano un significato speciale per il browser, per il server del database e per altre parti della soluzione. Dovresti sfuggire correttamente ai caratteri speciali per ogni interazione (ad esempio mysql_escape_string () per il database MySQL, htmlspecialchars () per HTML, ecc.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top