Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Estoy tratando de encontrar una manera de limpiar de manera efectiva todas las variables POST y GET con una sola función. Aquí está la función en sí:

//clean the user's input
function cleanInput($value, $link = '')
{
    //if the variable is an array, recurse into it
    if(is_array($value))
    {
        //for each element in the array...
        foreach($value as $key => $val)
        {
            //...clean the content of each variable in the array
            $value[$key] = cleanInput($val);
        }

        //return clean array
        return $value;
    }
    else
    {
        return mysql_real_escape_string(strip_tags(trim($value)), $link);
    }
}

Y aquí está el código que lo llamaría:

//This stops SQL Injection in POST vars
foreach (
    

Esta pregunta ya tiene una respuesta aquí:

         

Estoy tratando de encontrar una manera de limpiar de manera efectiva todas las variables POST y GET con una sola función. Aquí está la función en sí:

//clean the user's input
function cleanInput($value, $link = '')
{
    //if the variable is an array, recurse into it
    if(is_array($value))
    {
        //for each element in the array...
        foreach($value as $key => $val)
        {
            //...clean the content of each variable in the array
            $value[$key] = cleanInput($val);
        }

        //return clean array
        return $value;
    }
    else
    {
        return mysql_real_escape_string(strip_tags(trim($value)), $link);
    }
}

Y aquí está el código que lo llamaría:

<*>

A mi me parece que debería funcionar. Pero por alguna razón, no devolverá los arreglos de algunas casillas de verificación que tengo en un formulario. Siguen saliendo en blanco.

He probado mi código sin la función anterior y funciona bien, solo quiero ese bit de seguridad adicional allí.

¡Gracias!

POST as $key => $value) {
    

Esta pregunta ya tiene una respuesta aquí:

         

Estoy tratando de encontrar una manera de limpiar de manera efectiva todas las variables POST y GET con una sola función. Aquí está la función en sí:

//clean the user's input
function cleanInput($value, $link = '')
{
    //if the variable is an array, recurse into it
    if(is_array($value))
    {
        //for each element in the array...
        foreach($value as $key => $val)
        {
            //...clean the content of each variable in the array
            $value[$key] = cleanInput($val);
        }

        //return clean array
        return $value;
    }
    else
    {
        return mysql_real_escape_string(strip_tags(trim($value)), $link);
    }
}

Y aquí está el código que lo llamaría:

<*>

A mi me parece que debería funcionar. Pero por alguna razón, no devolverá los arreglos de algunas casillas de verificación que tengo en un formulario. Siguen saliendo en blanco.

He probado mi código sin la función anterior y funciona bien, solo quiero ese bit de seguridad adicional allí.

¡Gracias!

POST[$key] = cleanInput($value, $link); } //This stops SQL Injection in GET vars foreach (
    

Esta pregunta ya tiene una respuesta aquí:

         

Estoy tratando de encontrar una manera de limpiar de manera efectiva todas las variables POST y GET con una sola función. Aquí está la función en sí:

//clean the user's input
function cleanInput($value, $link = '')
{
    //if the variable is an array, recurse into it
    if(is_array($value))
    {
        //for each element in the array...
        foreach($value as $key => $val)
        {
            //...clean the content of each variable in the array
            $value[$key] = cleanInput($val);
        }

        //return clean array
        return $value;
    }
    else
    {
        return mysql_real_escape_string(strip_tags(trim($value)), $link);
    }
}

Y aquí está el código que lo llamaría:

<*>

A mi me parece que debería funcionar. Pero por alguna razón, no devolverá los arreglos de algunas casillas de verificación que tengo en un formulario. Siguen saliendo en blanco.

He probado mi código sin la función anterior y funciona bien, solo quiero ese bit de seguridad adicional allí.

¡Gracias!

GET as $key => $value) {
    

Esta pregunta ya tiene una respuesta aquí:

         

Estoy tratando de encontrar una manera de limpiar de manera efectiva todas las variables POST y GET con una sola función. Aquí está la función en sí:

//clean the user's input
function cleanInput($value, $link = '')
{
    //if the variable is an array, recurse into it
    if(is_array($value))
    {
        //for each element in the array...
        foreach($value as $key => $val)
        {
            //...clean the content of each variable in the array
            $value[$key] = cleanInput($val);
        }

        //return clean array
        return $value;
    }
    else
    {
        return mysql_real_escape_string(strip_tags(trim($value)), $link);
    }
}

Y aquí está el código que lo llamaría:

<*>

A mi me parece que debería funcionar. Pero por alguna razón, no devolverá los arreglos de algunas casillas de verificación que tengo en un formulario. Siguen saliendo en blanco.

He probado mi código sin la función anterior y funciona bien, solo quiero ese bit de seguridad adicional allí.

¡Gracias!

GET[$key] = cleanInput($value, $link); }

A mi me parece que debería funcionar. Pero por alguna razón, no devolverá los arreglos de algunas casillas de verificación que tengo en un formulario. Siguen saliendo en blanco.

He probado mi código sin la función anterior y funciona bien, solo quiero ese bit de seguridad adicional allí.

¡Gracias!

¿Fue útil?

Solución

Lo que estás haciendo no es suficiente. Consulte aquí .

Otros consejos

Use filter_input si es posible (php5 +) Lo mantiene mucho más limpio y como En la medida en que soy consciente, puede desinfectar y validar todo lo que pueda necesitar usándolo.

Puede usar filter var array y, por ejemplo, FILTER_SANITIZE_STRING para filtrar todo el conjunto de mensajes

filter_var_array(

Use filter_input si es posible (php5 +) Lo mantiene mucho más limpio y como En la medida en que soy consciente, puede desinfectar y validar todo lo que pueda necesitar usándolo.

Puede usar filter var array y, por ejemplo, FILTER_SANITIZE_STRING para filtrar todo el conjunto de mensajes

<*>

Hay un montón de diferentes opciones de filtro disponibles en w3schools referencia de filtro

POST, FILTER_SANITIZE_STRING) //just an example filter

Hay un montón de diferentes opciones de filtro disponibles en w3schools referencia de filtro

para hacer que la recursión sea más elegante, puedes usar algo como array_map por ejemplo:

para hacer que la recursión sea más elegante, puedes usar algo como array_map por ejemplo:

<*>

Use var de filtro si puede, ya que este tipo de enfoques son generalmente malos, aunque solo un ejemplo;)

POST = array_map('mysql_real_escape_string',

para hacer que la recursión sea más elegante, puedes usar algo como array_map por ejemplo:

<*>

Use var de filtro si puede, ya que este tipo de enfoques son generalmente malos, aunque solo un ejemplo;)

POST);

Use var de filtro si puede, ya que este tipo de enfoques son generalmente malos, aunque solo un ejemplo;)

las casillas de verificación desactivadas no se envían al servidor.

puede usar array_walk_recursive para hacer qué quieres

Esta es una forma incorrecta de limpiar la entrada.

La aplicación de mysql combinado que escapa a absolutamente todo en $ _POST y $ _GET volverá y te morderá, si aún deseas utilizar los datos después de He realizado una consulta en la base de datos, pero no quieres que aparezcan los caracteres de escape.

Use consultas parametrizadas con mysqli o PDO y nunca necesitará usar mysql_real_escape_string () .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top