Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Validar al recibir variables por POST

Estas en el tema de Validar al recibir variables por POST en el foro de PHP en Foros del Web. Buenas, estoy iniciándome en la programación en PHP y me preguntaba si tiene sentido validar las variables POST en la pagina de recepción de un ...
  #1 (permalink)  
Antiguo 21/02/2014, 04:31
 
Fecha de Ingreso: noviembre-2012
Mensajes: 184
Antigüedad: 11 años, 5 meses
Puntos: 0
Validar al recibir variables por POST

Buenas,
estoy iniciándome en la programación en PHP y me preguntaba si tiene sentido validar las variables POST en la pagina de recepción de un formulario.
Un saludo y gracias de antemano.
  #2 (permalink)  
Antiguo 21/02/2014, 05:17
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Validar al recibir variables por POST

Claro que tiene sentido, toda variable externa puede ser modificada, por lo tanto cuanta más validación, mejor.

Un saludo
  #3 (permalink)  
Antiguo 21/02/2014, 08:26
Avatar de supercoco79  
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 11 años, 6 meses
Puntos: 35
Respuesta: Validar al recibir variables por POST

Cita:
Iniciado por Cota_Isla Ver Mensaje
Buenas,
estoy iniciándome en la programación en PHP y me preguntaba si tiene sentido validar las variables POST en la pagina de recepción de un formulario.
Un saludo y gracias de antemano.
No solo tiene sentido sino que además debes hacerlo por varias razones. Entre ellas:

1. Validar tus entradas impedirá que tus scripts se comporten de una manera inesperada, evitando errores innecesarios.
2. Mejora la usabilidad de la web. Eso sí, te recomiendo que el formulario sea populated, es decir, que conserve los valores de entrada en tus inputs en caso de que falle la validación.
3. Y el más importante: la SEGURIDAD. Puede que algún usuario malintencionado intente introducir código a través del mismo, pudiendo hackear datos e incluso claves.

No dejes nada al azar y acertarás. Sé de primeras que la validación de los formularios es una carga pesada, y además, aburrido hasta más no poder, pero te repito que en mi opinión es una obligación.

Saludos!!!!
__________________
Yesterday was the only easy day. Deportes de aventura
  #4 (permalink)  
Antiguo 21/02/2014, 14:08
 
Fecha de Ingreso: mayo-2012
Ubicación: shilito
Mensajes: 67
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Validar al recibir variables por POST

Hola, una manera la cual yo me baso para darle algo de seguridad a la variales es con el PHp Sanitize.

te dejo un ejemplo

Código PHP:
Ver original
  1. $var = filter_input (FILTER_POST, 'variable_post_nombre', Metodo)

Te dejo el link de la pagina oficial

http://php.net/manual/es/filter.filters.sanitize.php
  #5 (permalink)  
Antiguo 21/02/2014, 14:33
Avatar de elporfirio  
Fecha de Ingreso: octubre-2013
Mensajes: 37
Antigüedad: 10 años, 6 meses
Puntos: 4
Respuesta: Validar al recibir variables por POST

ademas de eso puedes restringuir las entradas...

por ejemplo si vas a recibir una clave como un carnet, ID o CURP (depende el pais) ya conoces la cantidad Maxima de caracteres.

hacer un simple substr($_POST["input"]); le mete mucha seguridad, algo sencillo no?.
__________________
visita http://elporfirio.com o habrá tabla ¬¬
  #6 (permalink)  
Antiguo 21/02/2014, 20:41
 
Fecha de Ingreso: noviembre-2012
Mensajes: 184
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Validar al recibir variables por POST

Vale muchas gracias! más que nada lo preguntaba porque a lo mejor si a través de un input introduzco un DNI y este input le obligo que tenga un patrón, pero algun hacker lo evita, por eso seria necesario validar antes d introducir en la BD no?

Con respecto a vustras respuestas no se lo que es formulario populated?

El ultimo método que me comentais parece el mejor no? ya que se usan funciones propias de php.

Añadir que mi aplicación es mono usuario, solo la usará el administrador.

Muchas gracias y un saludo!

Última edición por Cota_Isla; 21/02/2014 a las 20:46
  #7 (permalink)  
Antiguo 22/02/2014, 02:39
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Validar al recibir variables por POST

exacto lo que comentas, antes de meter alguna informacion a la base de dato pasale todo los filtros que sean necesarios hasta encriptalos, para asi evitar algo llamado "SQL injeccion" muy popular y que hasta el momento
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #8 (permalink)  
Antiguo 22/02/2014, 04:08
 
Fecha de Ingreso: noviembre-2012
Mensajes: 184
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Validar al recibir variables por POST

vale lo que he usado mas que nada son comparaciones de tamaños, de tipos... acorde a los inputs del formulario.
Adjunto el código por si me recomendáis alguno mas:
Código PHP:
$n_post count($_POST);
                    
$valores array_values($_POST);
                    for(
$i=0;$i<$n_post;$i++)
                    { 
                        if(empty(
$valores[$i]))
                        {
                            
$enviar false;
                            break;
                        }
                    }
                    if(
$enviar)
                    {
                        
$t preg_replace('/\s\s+/',' ',mysqli_real_escape_string($conex,$_POST["tit_not"]));
                        if(
strlen($t)>24 || strlen($t)<|| is_numeric($t) || is_numeric(substr($t,0,1)))
                            
$enviar false;
                        
$categs = ["General","Actividades","Grupos","Instalaciones","Tarifas","Competición"];
                        if(
in_array($_POST["cat_not"],$categs,true))
                            
$c mysqli_real_escape_string($conex,$_POST["cat_not"]);
                        else
                            
$enviar false;
                        
$d mysqli_real_escape_string($conex,$_POST["desc_not"]);
                        
$d preg_replace('/\s\s+/',' ',filter_var($d,FILTER_SANITIZE_STRING));
                        
$d str_replace("'"" "$d);
                        if(
strlen($d)>190 || is_numeric(substr($d,0,1)))
                            
$enviar false;
                    } 
  #9 (permalink)  
Antiguo 22/02/2014, 06:08
 
Fecha de Ingreso: abril-2012
Mensajes: 88
Antigüedad: 12 años
Puntos: 1
Respuesta: Validar al recibir variables por POST

Yo diría que no es necesario, es obligatorio... Toda variable que se envia debe ser analizada según lo que requirmos que haga esa pagina de validación de usuario y que solo cuando todas las condiciones que hemos puesto a esa variable se cumplan, se proceda a ser insertada en la base de datos...

Etiquetas: formulario, post, recibir, variable, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:47.