English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Análisis del uso de htmlentities y htmlspecialchars en operaciones de filtrado de entrada de php

Este ejemplo ilustra el uso de la operación de filtrado de entrada htmlentities y htmlspecialchars en PHP. Compartimos con todos para que puedan referirse a ellos, como se muestra a continuación:

Filtrar la entrada (es decir, cualquier dato proveniente de las fuentes de datos enumeradas) significa, escapar o eliminar caracteres no seguros. Antes de que los datos alcancen la capa de almacenamiento de la aplicación, es necesario filtrar los datos de entrada. Esto es la primera línea de defensa. Si el formulario de comentarios del sitio web recibe HTML, por defecto, los visitantes pueden incluir sin restricciones etiquetas <script> maliciosas en los comentarios, como se muestra a continuación:

<p>
  mi prueba
</p>
<script>alert(123)</script>

En el ejemplo anterior. Si no se filtra este comentario, el código malicioso se almacenará en la base de datos y luego se renderizará en las etiquetas del sitio web.

HTML

Podemos usar las funciones htmlentities o htmlspecialchars para filtrar HTML, convirtiendo los caracteres especiales en las entidades HTML correspondientes.

La función htmlentities convierte todos los caracteres especiales que contienen "entidades HTML" correspondientes, como símbolos de moneda como el euro o la libra esterlina, y símbolos de copyright, mientras que htmlspecialchars solo escapará ciertos caracteres especiales, & " ' < >

Esto2Esta función es bastante estúpida, por defecto no escapará las comillas simples.

$str='<a href="test.html" rel="external nofollow" >\'página de prueba\'</a><script>alert(213)</script>'; 
//no tiene la comilla simple escapada
echo $str;
echo "<hr/>".PHP_EOL;
echo htmlentities($str);
echo "<hr/>".PHP_EOL;
echo htmlspecialchars($str);

es necesario configurar el2Un parámetro ENT_QUOTES, consulte el manual de PHP para obtener más detalles.

echo htmlentities($str,ENT_QUOTES,'UTF-8');-8'); //Las comillas simples también se escapan
echo "<hr/>".PHP_EOL;
echo htmlspecialchars($str,ENT_QUOTES,'UTF')-8');//Las comillas simples también se escapan

Los ejemplos anteriores no pueden distinguir entre htmlentities y htmlspecialchars, por lo que se utilizarán algunos caracteres especiales, como euros, a continuación. htmlentities lo escapará, mientras que htmlspecialchars no.

echo htmlentities(' <>"').PHP_EOL;
echo "<hr/>".PHP_EOL;
echo htmlspecialchars(' <>"').PHP_EOL; //Sin escapar

Conclusión:Al hacer un envío de formulario común, se puede usar strip_tags para quitar las etiquetas html, si se necesita editar texto enriquecido y se deben conservar las etiquetas html, se puede filtrar los datos enviados con htmlspecialchars.

Más información sobre contenido relacionado con PHP que pueda ser de interés para los lectores, puede ver la sección especial de este sitio: 'Tutorial de seguridad de programación de PHP', 'Resumen de técnicas de filtrado de seguridad de PHP', 'Resumen de uso de operadores y operadores de PHP', 'Resumen de técnicas de programación de red de PHP', 'Tutorial de introducción a la sintaxis básica de PHP', 'Tutorial de introducción a la programación orientada a objetos de PHP', 'Resumen de uso de cadenas (string) de PHP', 'php'+Tutorial de introducción a la operación de bases de datos mysql y Resumen de técnicas comunes de operación de bases de datos php

Espero que lo descrito en este artículo pueda ayudar a todos en la programación de PHP.

Declaración: El contenido de este artículo se obtiene de la red, pertenece al propietario original, el contenido se contribuye y carga espontáneamente por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha realizado un procesamiento editorial humano y no asume la responsabilidad de las responsabilidades legales relacionadas. Si encuentra contenido sospechoso de copyright, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar, y proporcione evidencia relevante. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará