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));
});