security – ¿Cómo y cuándo usar filter_xss () y check_plain ()?

Pregunta:

Hay muchos archivos de plantilla como este views-view-fields--magazine--magazine.tpl.php en mi sitio web. ¿Cómo y cuándo debería usar filter_xss () y check_plain () para mejorar la seguridad? por ejemplo, este es el código:

<div>
    <div class="bf-header bf-article-header"><?php print $fields['title']->content; ?></div>
    <div class="bf-article-body"><?php print $fields['field_magazine_body']->content;?></div>
    <div class="bf-article-image"><?php print $fields['field_magazine_image']->content;?></div>
</div>
<div class="separator article-view-separator"></div>

¿Cómo puedo aplicar esas funciones en él?

Respuesta:

Primero, lea sobre estos en la API de Drupal:

Entonces, check_plain() codifica caracteres especiales que tienen un significado especial en HTML (como < y & ) en entidades de texto sin formato (es decir, &lt; y &amp; respectivamente) que harán que estos se representen literalmente (no interpretados como HTML) cuando esa cadena que luego se muestra como parte de una página con marcado HTML. La función filter_xss() filtra una cadena HTML para evitar vulnerabilidades de cross-site-scripting (XSS). Hace cuatro cosas:

  • Eliminando personajes y construcciones que pueden engañar a los navegadores
  • Asegurarse de que todas las entidades HTML estén bien formadas
  • Asegurarse de que todas las etiquetas y atributos HTML estén bien formados
  • Asegurarse de que ninguna etiqueta HTML contenga URL con un protocolo no permitido (por ejemplo, javascript 🙂

Ambas funciones se utilizan para desinfectar los datos de los usuarios para asegurarse de que cualquier inyección de usuario se neutralice antes de que los datos se procesen en su sitio.

Nunca pasa la misma cuerda a través de ambos .

Si usa check_plain() entonces se supone que la cadena pasada a la función debe usarse como texto sin formato (no HTML). Entonces filter_xss() no es necesaria, ya check_plain() siempre que el texto sin formato cadena.

Si usa filter_xss() , entonces se supone que la cadena pasada a la función es HTML, y check_plain() lo estropeará.

Cuando miro la plantilla que usa como ejemplo, me parece que los tres campos pasados ​​a print() provienen de contenido que ya está desinfectado y no necesita más limpieza.

Sin embargo, si crea su propio módulo que recopila la entrada del usuario sin pasarla por un filtro de texto "seguro" como "HTML filtrado" o "Sencillo", debe utilizar estas funciones con fines de saneamiento.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım