¿Es posible evitar la validación de la cadena PHP con una cadena UTF-8 con formato incorrecto?

0

Algunas de las funciones de cadenas de PHP antiguas, por ejemplo, explode() , funcionan con cadenas UTF-8, pero no funcionan correctamente en cadenas UTF-8 con formato incorrecto. ¿Es este un problema de seguridad? ¿Es posible evitar la validación de cadenas con cadenas UTF-8 mal formadas de alguna manera?

Es difícil hacer una lista de estas funciones. Creo que todas las funciones básicas de la cadena PHP se ven afectadas de alguna manera. Por ejemplo, strpos no da la posición correcta en una cadena, strlen, no da la longitud correcta. Así que supongo que htmlentities, htmlspecialchars, etc ... también están afectados, pero es más complicado, porque algunos de ellos tienen una bandera UTF-8, otros no son compatibles con UTF-8, como strpos, otros sí. no funciona con UTF-8 con formato incorrecto, etc ... Puedo hacer una búsqueda después de tener un ejemplo de trabajo, así que eso es lo que estoy buscando.

Es suficiente para mí, por ejemplo, algo como:

  • enviar 2 cadenas con formato incorrecto al servidor, que en teoría no puedo verificar con estas funciones
  • compáralos con implode y obtén algo malicioso, por ejemplo XSS.

¿Es esto posible? No entiendo completamente cómo funciona UTF-8 o cómo funciona UTF-8 mal formado ...

    
pregunta inf3rno 09.06.2014 - 00:12
fuente

1 respuesta

1

La función explode() no usa ninguna codificación. Simplemente divide una secuencia de bytes en una subsecuencia de bytes. Si esos bytes son caracteres válidos en la codificación que utiliza, está fuera del alcance de esta función.

Entonces, explode() funciona de la misma manera para cualquier , ya sea una secuencia UTF-8 válida o una secuencia UTF-8 no válida.

Si desea validar las cadenas en una codificación particular antes de la operación de división, puede usar mb_check_encoding() .

    
respondido por el Fleche 09.06.2014 - 07:45
fuente

Lea otras preguntas en las etiquetas