Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 12 Julio 2021, 17:23 pm



Título: [Pregunta]: ¿htmlspecialchars es más conveniente acá?
Publicado por: Leguim en 12 Julio 2021, 17:23 pm
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)?

(https://i.ibb.co/SctYdyv/ijfoasdfjasdfjasdfasdf.png)


Título: Re: [Pregunta]: ¿htmlspecialchars es más conveniente acá?
Publicado por: #!drvy en 12 Julio 2021, 17:34 pm
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


Título: Re: [Pregunta]: ¿htmlspecialchars es más conveniente acá?
Publicado por: Leguim en 12 Julio 2021, 20:55 pm
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?


Título: Re: [Pregunta]: ¿htmlspecialchars es más conveniente acá?
Publicado por: 3n31ch en 12 Julio 2021, 23:07 pm
Lo que dice #!drvy es totalmente correcto. En respuesta a tu última pregunta (y parafraseando a #!drvy) si, debes limpiarlo siempre de salida.