php - htmlspecialchars_decode - cuándo usar la función htmlspecialchars()?
php htmlentities (4)
Guarde exactamente lo que ingresa el usuario en la base de datos. luego cuando lo muestre a público, use htmlspecialchars()
, para que ofrezca alguna protección xss.
Hola, me preguntaba cuándo es el lugar apropiado para usar htmlspecialchars (). ¿Es antes de insertar datos en la base de datos o al recuperarlos de la base de datos?
Solo debe llamar a este método cuando haga eco de los datos en HTML.
No almacene el código HTML escapado en su base de datos; solo hará que las consultas sean más molestas.
La base de datos debe almacenar sus datos reales, no su representación en HTML.
Guía - Cómo usar la función htmlspecialchars () en PHP
Para empezar, debes entender 1 concepto simple: renderizar.
¿Qué es Render? Render es cuando el HTML se transforma
<b>Hello</b>
audaz como este Hola . Eso es render.
Entonces ... ¿Cuándo usar la función htmlspecialchars ()?
Donde quiera que desee renderizar contenidos HTML. Por ejemplo, si está utilizando JQuery y hace esto:
$("#YourDiv").html("<b>Hello</b>");
Los contenidos div serán Hello . Se procesa el texto en HTML.
Si desea mostrar el mensaje de esta manera (fue escrito por el usuario):
<b>Hello</b>
tienes que poner:
$("#YourDiv").text("<b>Hello</b>");
De esa forma, Hello nunca se representará.
Si desea cargar el mensaje (como escribió el usuario) en un cuadro de texto, área de texto, etc. ... Debe poner:
<input type="text" class="Texbox1" value="">
<script>
$(".Textbox1").val("<b>Hello</b>");
</script>
Eso mostrará
<b>Hello</b>
Dentro del Textbox sin problemas.
Conclusión:
Cualquiera que sea la información que el usuario ingrese en sus formularios, etc ... Guarde los datos como de costumbre. No use ninguna función. Si el usuario envió 12345 guardar como es. No filtren nada. Solo tiene que filtrar cuándo va a mostrar los datos en la página a los usuarios. USTED, SOLO decide si desea representar o no lo que escribió el usuario. *Recuerda eso.
¡Saludos!
Utiliza htmlspecialchars
CADA vez que muestra contenido dentro de HTML, por lo que se interfiere como contenido y no como HTML.
Si permite que el contenido se trate como HTML, acaba de abrir la puerta a los errores como mínimo, y el total de XSS piratea en el peor.