Exploitación de cadenas multioctetos en PHP

Advertencia

Esta característica ha sido declarada OBSOLETA a partir de PHP 7.2.0, y será ELIMINADA a partir de PHP 8.0.0. Su uso está totalmente desaconsejado.

Puede resultar difícil hacer funcionar una aplicación PHP existente en un entorno multioctetos. Esto se debe a que la mayoría de las aplicaciones PHP están escritas con funciones de cadenas de caracteres estándar como la función substr(), que es conocida por no gestionar adecuadamente las cadenas multioctetos.

Mbstring también soporta la sobrecarga de funciones, para permitir el soporte de cadenas multioctetos sin modificar los scripts PHP. Utilizando este sistema de sobrecarga de funciones, algunas funciones PHP serán reemplazadas por su equivalente de mbstring. Por ejemplo, mb_substr() reemplazará substr(). Este sistema de reemplazo transparente permite una portabilidad simple y eficaz de las aplicaciones.

Para utilizar la sobrecarga de funciones, defina mbstring.func_overload, en el php.ini, a un valor positivo que represente una combinación de máscaras de octetos especificando las categorías de funciones a sobrecargar. Debe ser definido a 1 para sobrecargar la función mail(), 2 para las funciones de cadenas, 4 para las funciones de expresiones regulares. Por ejemplo, con el valor 7, todas las funciones anteriores serán sobrecargadas. A continuación se presenta la lista completa de funciones sobrecargadas, con su función de reemplazo.

Funciones de reemplazo
Valor de mbstring.func_overload Función original Función de reemplazo
1 mail() mb_send_mail()
2 strlen() mb_strlen()
2 strpos() mb_strpos()
2 strrpos() mb_strrpos()
2 substr() mb_substr()
2 strtolower() mb_strtolower()
2 strtoupper() mb_strtoupper()
2 stripos() mb_stripos()
2 strripos() mb_strripos()
2 strstr() mb_strstr()
2 stristr() mb_stristr()
2 strrchr() mb_strrchr()
2 substr_count() mb_substr_count()

Nota:

No se recomienda utilizar el reemplazo de funciones mbstring en un contexto de per-directory, ya que no se ha confirmado aún que sean suficientemente estables en un entorno de producción y pueden llevar a resultados incoherentes.