Filtro global XSS para Laravel 4

Para proteger nuestra aplicación desarrollada en Laravel de ataques de XSS y sanear todos los datos de entrada para nuestros formularios de forma transparente a todo nuestro código, podemos utilizar el siguiente método estático en de nuestras clases:

 /*
 *
 * Method to strip tags globally.
 */
public static function globalXssClean()
{
    // Recursive cleaning for array [] inputs, not just strings.
    $sanitized static::arrayStripTags(Input::get());
    Input::merge($sanitized);
}
public static function arrayStripTags($array)
{
    $result array();
    foreach($array as $key=> $value) {
        // Don't allow tags on key either, maybe useful for dynamic forms.
        $keystrip_tags($key);
        // If the value is an array, we will just recurse back into the
        // function to keep stripping the tags out of the array,
        // otherwise we will set the stripped value.
        if(is_array($value)) {
            $result[$key] = static::arrayStripTags($value);
        else{
            // I am using strip_tags(), you may use htmlentities(),
            // also I am doing trim() here, you may remove it, if you wish.
            $result[$key] = trim(strip_tags($value));
        }
    }
    return $result;
}
Y después tan sólo debemos añadir una llamada a nuestro método estático desde el filtro “before” en filters.php:
App::before(function($request)
{
// Our own method to defend XSS attacks globally.
OurClass::globalXssClean();
});

Fuente original

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s