[Pregunta]: ¿htmlspecialchars es más conveniente acá?

Iniciado por Leguim, 12 Julio 2021, 17:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Digamos las técnicas de limpieza que son usadas para evitar ataques XSS, ¿sería conveniente usarlas tanto cuando se obtienen los datos de un formulario y hay que guardarlos en la base de datos como también cuando esos datos que están en la base de datos son solicitados y mostrados (echo)?


#!drvy

#1
El concenso general es que el escape se debe hacer si o si justo cuando se va a imprimir.. porque de lo contrario, te estas fiando de que el dato almacenado en la base de datos esta limpio. Si en algun momento conectas una API a la BD por otra via o haces un endpoint y te olvidas de limpiarlo, estas jodido.

Además, se prefiere almacenar un dato raw porque el escape o la limpieza puede romper el dato original. Eso si, eso no quiere decir que tengas que almacenar todo tal y como te viene. Un nombre de usuario o un correo electronico deben ser filtrados/escpados/limpiados antes de almacenarse... y si o si, deben ser escapados antes de mostrarse, pero imaginate que tienes una sección donde el usuario escribe articulos y los escapas "prematuramente", en el futuro, todos esos specialchars te pueden traer problemas para portarlos a otro formato que no sea html.

En fin,

Escapar/Limpiar antes de imprimir: Siempre.
Limpiar antes de guardar: Cuando haga falta.

Saludos

Leguim

solamente cuando expulso en el html?
es decir, digamos que tengo una función X de javascript que recibirá como parametro una variable PHP, ahí también debo limpiarlo?

3n31ch

Lo que dice #!drvy es totalmente correcto. En respuesta a tu última pregunta (y parafraseando a #!drvy) si, debes limpiarlo siempre de salida.