E 'possibile evitare la convalida della stringa PHP con una stringa UTF-8 malformata?

0

Alcune delle vecchie funzioni di stringa PHP, ad esempio explode() , funzionano con le stringhe UTF-8, ma non funzionano correttamente su stringhe UTF-8 malformate. È un problema di sicurezza? È possibile evitare la convalida delle stringhe con stringhe UTF-8 malformate in qualche modo?

È difficile fare un elenco di queste funzioni. Penso che ogni funzione della stringa PHP di base sia influenzata in qualche modo. Ad esempio lo strpos non dà la giusta posizione in una stringa, strlen, non dà la giusta lunghezza. Quindi suppongo che htmlentities, htmlspecialchars, ecc ... siano anch'essi influenzati, ma è più complicato, perché alcuni di essi hanno un flag UTF-8, alcuni di loro non sono compatibili con UTF-8, come gli strpos, alcuni di loro lo fanno non funziona con UTF-8 malformato, ecc ... Posso fare una ricerca dopo aver avuto un esempio funzionante, quindi è quello che sto cercando.

Per me è abbastanza, ad esempio qualcosa del tipo:

  • invia 2 string malformati al server, che in teoria non posso controllare con queste funzioni
  • concatale con implode e ottieni qualcosa di dannoso, ad esempio XSS.

È possibile? Non capisco completamente come UTF-8 o come UTF-8 non valido funzioni ...

    
posta inf3rno 09.06.2014 - 00:12
fonte

1 risposta

1

La funzione explode() non utilizza alcuna codifica. Semplicemente divide una sequenza di byte in una sottosequenza di byte. Se questi byte sono caratteri validi nella codifica che utilizzi, questi non rientrano nell'ambito di questa funzione.

Quindi explode() funziona allo stesso modo per qualsiasi stringa, sia essa una sequenza UTF-8 valida o una sequenza UTF-8 non valida.

Se vuoi convalidare le stringhe su una particolare codifica prima dell'operazione di suddivisione, sei libero di usare mb_check_encoding() .

    
risposta data 09.06.2014 - 07:45
fonte

Leggi altre domande sui tag