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 ...