1
PHP / [Aporte / Script puesto a criticas constructivas] Seguridad POST y GET automatic
« en: 17 de Junio de 2012, 20:36:45 pm »
Hola foreros!
Hoy estaba programando un sistema de noticias y usuarios.
Creo que lo primero que pensé cuando se me encomendó la tarea fue en la seguridad necesaria para este tipo de tareas. Uno de los participantes en el proyecto desarrolló la famosa función de filtro de variables la cual debe ejecutarse manualmente cada vez que uno recibe las variables.
En ese momento pensé... ¿Y si me olvido de filtrar alguna variable por despiste? Esto sería un gran peligro para todo el proyecto, por lo cual pensé en el siguiente algoritmo que filtraría automáticamente todas las variables GET y POST ni bien se crearan.
<?php
if($Filtrar != "0"){
if(count($_GET)>0)
{
foreach($_GET as $key=>$value)
{
$value = strip_tags($value);
$value = htmlspecialchars($value);
$value = htmlentities($value);
$value = trim($value);
$value = str_replace("<","<", $value);
$value = str_replace(">",">", $value);
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
$_GET[$key]=$value;
}
}
if(count($_POST)>0)
{
foreach($_POST as $key=>$value)
{
$value = strip_tags($value);
$value = htmlspecialchars($value);
$value = htmlentities($value);
$value = trim($value);
$value = str_replace("<","<", $value);
$value = str_replace(">",">", $value);
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
$_POST[$key]=$value;
}
}
}
?>
La idea es que este código esté dentro de un archivo que se incluya siempre (como ser el config o la base del kernel en caso de utilizar alguno) de esta forma estaríamos en un 99% de los casos a salvo de los ataques...
¿Que les parece? ¿Alguna critica para mejorar?
Gracias!
Hoy estaba programando un sistema de noticias y usuarios.
Creo que lo primero que pensé cuando se me encomendó la tarea fue en la seguridad necesaria para este tipo de tareas. Uno de los participantes en el proyecto desarrolló la famosa función de filtro de variables la cual debe ejecutarse manualmente cada vez que uno recibe las variables.
En ese momento pensé... ¿Y si me olvido de filtrar alguna variable por despiste? Esto sería un gran peligro para todo el proyecto, por lo cual pensé en el siguiente algoritmo que filtraría automáticamente todas las variables GET y POST ni bien se crearan.
<?php
if($Filtrar != "0"){
if(count($_GET)>0)
{
foreach($_GET as $key=>$value)
{
$value = strip_tags($value);
$value = htmlspecialchars($value);
$value = htmlentities($value);
$value = trim($value);
$value = str_replace("<","<", $value);
$value = str_replace(">",">", $value);
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
$_GET[$key]=$value;
}
}
if(count($_POST)>0)
{
foreach($_POST as $key=>$value)
{
$value = strip_tags($value);
$value = htmlspecialchars($value);
$value = htmlentities($value);
$value = trim($value);
$value = str_replace("<","<", $value);
$value = str_replace(">",">", $value);
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
$_POST[$key]=$value;
}
}
}
?>
La idea es que este código esté dentro de un archivo que se incluya siempre (como ser el config o la base del kernel en caso de utilizar alguno) de esta forma estaríamos en un 99% de los casos a salvo de los ataques...
¿Que les parece? ¿Alguna critica para mejorar?
Gracias!