PHP: Sanitizar parámetros

Cuando recibimos parámetros en un script de PHP tenemos que tener cuidado a la hora de procesarlos ya que pueden contener código malicioso.

Los datos externos pueden recibirse en PHP por las siguientes vías:

  • Datos de un formulario rellenado por los usuarios
  • Cookies
  • Servicios web
  • Variables del servidor
  • Resultados de queries
PHP nos ayuda con los filtros a través de filter_var().

Os pongo aquí el ejemplo para filtrar texto:

<?php
$str = "<h1>Hola mundo</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

Os pongo aquí el ejemplo para filtrar enteros:

<?php
$int = 100;

if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Es un entero válido");
else {
    echo("No es un entero válido");
}
?>

Aquí validamos IP:

<?php
$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
    echo("$ip es una IP válida");
else {
    echo("$ip no es una IP válida");
}
?>

Aquí validamos una URL:

<?php
$url = "https://www.w3schools.com";

// Quita caracteres prohibidos y sanitiza una URL$url = filter_var($url, FILTER_SANITIZE_URL);

// Validar URLif (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo("$url es una URL válida");
else {
    echo("$url no es una URL válida");
}
?>

Comentarios