Ver índice de contenidos del libro

2.14. Seguridad

Resulta muy importante proteger las aplicaciones frente a los posibles ataques de usuarios maliciosos.

2.14.1. Mecanismo de escape

Siempre que muestres en una página cualquier información que provenga del usuario (por ejemplo las variables de una ruta o los parámetros GET o POST de la petición) debes asegurarte de aplicar el mecanismo de escape para evitar ataques de tipo XSS (Cross-site-scripting attacks).

Para escapar contenido HTML, PHP proporciona la función htmlspecialchars(). Silex proporciona un atajo a través del método escape():

$app->get('/name', function (Silex\Application $app) {
    $name = $app['request']->get('name');
    return "El nombre que has introducido: {$app->escape($name)}.";
});

Si tu aplicación utiliza plantillas Twig, haz uso de los filtros para escapar información o mejor aún, aplica el mecanismo de escape automático.

Para escapar la información enviada como parte de una respuesta JSON, utiliza la función json() de Silex:

$app->get('/name.json', function (Silex\Application $app) {
    $name = $app['request']->get('name');
 
    return $app->json(array('name' => $name));
});