English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método para analizar la parse_str de php para realizar la deserialización de cadenas de consulta a variables

Este ejemplo describe cómo php utiliza parse_str para analizar la cadena de consulta a variable. Compartimos con todos para referencia, como se muestra a continuación:

La función parse_str() puede analizar la cadena a variable, lo que significa que se ha implementado un mecanismo de conversión entre cadena y variable, durante el proceso de transmisión de datos entre el cliente y el servidor, los datos se transmiten en forma de cadena, como GET request, y luego en el servidor se pasa por $_GET/$_POST y otros variables globales para realizar la conversión de cadena a variable, como: https://es.oldtoolbag.com/?index.php?var1=1&var2=2,el servidor puede usar $_GET['var1'] para obtener var1=1&var2=2Este segmento de cadena se convierte en variable. La función parse_str() puede realizar la misma función, al usar la función parse_str() para analizar el valor de $_SERVER['QUERY_STRING'], se puede realizar directamente la conversión de cadena a variable, como $var1。

Uno, Prototipo de la función

void parse_str ( string str [, array &arr] )

Dos, Compatibilidad de versiones

PHP 3, PHP 4, PHP 5

Tres, Uso básico de la función y ejemplos

1. Analiza la cadena a variable

<?php
parse_str("var1=jb51&var2=parse_str");
echo $var1.$var2;
?>

2. Analiza la cadena y almacena las variables en un array

<?php
parse_str("var1=jb51&var2=parse_str",$array);
print_r($array);
?>

Salida:

Array ( [var1] => jb51 [var2] => parse_str )

Explicación: almacenar variables en un array en PHP 4.0.3 . Añade

3. La cadena de análisis contiene espacios

<?php
parse_str("v ar1=jb51&var 2=parse_str",$array);
print_r($array);
?>

Salida:

Array ( [v_ar1] => jb51 [var_2] => parse_str )

Explicación: convierte directamente los espacios en guiones bajos _

Cuatro, Notas de seguridad

1. Si no se configura el parámetro array, las variables configuradas por esta función sobrescribirán las variables con el mismo nombre.

2. La configuración magic_quotes_gpc en php.ini afecta la salida de esta función. Si se ha activado, las variables se convertirán con addslashes() antes de que parse_str() analice.

3. La función parse_str() tiene una vulnerabilidad en el procesamiento de parámetros, los atacantes pueden aprovechar esta vulnerabilidad para activar register_globals y utilizar otras vulnerabilidades en scripts PHP. Si se llama a parse_str() con un solo parámetro, la función considera que la cadena proporcionada se ha analizado como una cadena de solicitud transmitida a través de URL, pero los atacantes externos pueden enviar muchas variables de solicitud para desencadenar la terminación de memory_limit. Si se cierra la solicitud durante la llamada a parse_str(), el etiqueta register_globals se mantendrá abierta durante el resto del ciclo de vida del proceso del servidor web.

Los lectores interesados en más contenido relacionado con PHP pueden ver la sección especial de este sitio: 'Resumen de uso de cadenas (string) en PHP', 'Tutorial de estructuras de datos y algoritmos en PHP', 'Resumen de algoritmos de programación en PHP', 'Resumen de algoritmos de ordenación en PHP', 'Resumen de técnicas de recorrido y trucos en PHP', 'Trucos de operaciones matemáticas en PHP', 'Trucos de operaciones de arrays (Array) en PHP' y 'Resumen de técnicas comunes de operaciones de bases de datos en PHP'.

Espero que lo descrito en este artículo sea útil para la programación de PHP.

Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha realizado una edición humana y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar, y proporcione evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará