Se encuentra en:
Uso de la función filter_xss() para proteger de los ataques de Cross-Site Scripting en PHP
RECU-0671 (Recurso Ejemplo)
- Área: Codificación y Validación de entrada/salida
- Carácter del recurso: Obligatorio
- Tecnologías: PHP
Descripción
Cross-site scripting (XSS) es una forma común de ataque que permite insertar código sobre la web, lo que puede ser usado para provocar errores y mal funcionamiento de la misma.
La función filter_xss() protege al código contra esta vulnerabilidad de la siguiente manera:
- Comprueba que el texto filtrado esta en formato UTF-8
- Elimina caracteres como NULL
- Se asegura que las etiquetas HTML y sus etiquetas atributos están bien formadas.
- Se asegura las entidades HTML como & están bien formadas
- Asegura que no existen etiquetas HTML que contengan protocolos no permitidos.
Un ejemplo de uso sería el siguiente:
**
* Process variables for aggregator-item.tpl.php.
*
* @see aggregator-item.tpl.php
*/
function template_preprocess_aggregator_item(&$variables) {
$item = $variables['item'];
$variables['feed_url'] = check_url($item->link);
$variables['feed_title'] = check_plain($item->title);
$variables['content'] = aggregator_filter_xss($item->description);
...
}
Existe una llamada a aggregator_filter_xss(), que es un wrapper sobre filter_xss() y ofrece un array con las etiquetas HTML aceptables .Una versión simple de este wrapper sería:
/**
* Safely render HTML content, as allowed.
*/
function aggregator_filter_xss($value) {
$tags = variable_get("aggregator_allowed_html_tags",
'<a> <b> <br> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>');
// Turn tag list into an array so we can pass it as a parameter.
$allowed_tags = preg_split('/\s+|<|>/', $tags, -1, PREG_SPLIT_NO_EMPTY));
return filter_xss($value, $allowed_tags);
}
Contenidos relacionados
Pautas
Código | Título | Tipo | Carácter | |
---|---|---|---|---|
PAUT-0208 | Salida de las funciones | Pauta | Directriz | Obligatoria |
LIBP-0255 | Validación de los datos de entrada | Libro de pautas | Directriz | Obligatoria |