entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

que significa filtrar las variables y que ventajas genera?

lo siento si pregunto mucho pero es que soy bastante nuevo en esto, la pregunta es el titulo

1 Respuesta

2votos

white Puntos75880

Filtrar una variable http es remover caracteres indeseados de nuestros campos para prevenir acciones mal intencionadas de terceros, en el desarrollo web hay que ser muy desconfiado con tus usuarios.

supongamos que tienes un campo

<input name="usuario" type="text">
<input type="submit">

y en tu servidor tienes:

$usuario = $_POST['usuario'];
mysql_query("SELECT FROM usuarios WHERE usuario = '$usuario'");

ahora bien, un usuario mal intencionado puede enviar esto como nombre de usuario:

white' OR 1 = '1

en la consulta pasaria esto:

SELECT id FROM usuarios WHERE usuario='white' OR 1 = '1'

dandole la habilidad al usuario de poder de saltarse la comprobacion de usuario y ejecutar consultas libremente.

como prevenir esto?

existen varias funciones en php, normalmente para cadenas de texto se usa htmlspecialchars, htmlentities, mysql_real_escape_string, etc

$usuario = htmlspecialchars($_POST['usuario'], ENT_QUOTES);
mysql_query("SELECT FROM usuarios WHERE usuario = '$usuario'");

con este código la consulta se ejecuta de esta manera:

SELECT id FROM usuarios WHERE usuario='white&#039; OR &#039;1&#039;=&#039;1'

si el campo fuese un integro, se puede hacer cast a la variable:

$edad =  (int) $_GET['edad'];

asi saneamos nuestros campos.

NOTA: htmlspecialchars debe tener como segundo parametro ENT_QUOTES para escapar comillas simples.


En mysqli podemos crear sentencias preparadas lo que nos permite preparar nuestras variables de acuerdo al tipo definido.

Tambien ademas de sanear es bueno validar nuestros campos antes de cualquier cosa. php brinda funciones para ello, como con la función filter_var

$email = htmlspecialchars($_POST['email'], ENT_QUOTES);
$es_valido = filter_var($email, FILTER_VALIDATE_EMAIL);

if( $es_valido )
{
    echo ' si es valido ';
}

funciones relacionadas en el tema:

php.net - funcion filter_var
php.net - function htmlspecialchars
php.net - Sentencias preparadas en mysqli
Validar y sanear datos en php ( filter_var )

Links de interes:

Ataques de inyección SQL: qué son y cómo protegerse
GenBeta dev - Evita los ataques de inyección de SQL
---

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta