Domanda

Sto usando CodeIgniter in un'app. C'è una forma. Nell'elemento textrea, ho scritto qualcosa tra cui

%Features%

Tuttavia, quando voglio fare eco a questo con $ this-> input-> post (chiave), ottengo qualcosa di simile �atures%

Il "%Fe" è svanito.

Nel file principale indice.php di CI, ho provato var_dump($_POST) E vedo che la parola sopra è completamente ok. Ma quando lo sto prendendo con la libreria di input (il filtro XSS è acceso) ottengo il problema.

Quando il filtraggio XSS è spento, inizialmente sembra OK. Tuttavia, se lo memorizzo nel database e lo mostro la prossima volta, vedo lo stesso problema (anche il filtro XSS è spento).

È stato utile?

Soluzione

%Fe sembra sembrare una sequenza codificata da URL %FE, rappresentando il personaggio 254. È sgranocchiato nell'UNICODE "Non ho idea di cosa significhi quella sequenza" glifo ",.

È chiaro che il "filtro XSS" è troppo zelante quando si decodifica il campo alla presentazione.

È anche molto probabile che un decodo URL venga nuovamente eseguito ad un certo punto più tardi nel processo, quando si produce il risultato dal database. Controllare il database per assicurarsi che la stringa effettiva venga rappresentata correttamente.

Altri suggerimenti

Primo: sfuggire alle variabili prima di conservarle in DB. % ha un significato speciale in SQL.

Secondo: % ha anche un significato speciale negli URL, ad es. %20 è %Fe mapperà ad un carattere che verrà decodificato dall'input ()

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