Primero, lo que htmlspecialchars()
y funciones similares no eliminan el código peligroso, es la codificación datos como HTML .
Entonces, lo que htmlspecialchars
no no hace es lo siguiente:
- Recibir datos
- Encuentre un código HTML peligroso y reemplácelo por un código inofensivo
- Devuelve los datos desinfectados
Pero hace lo siguiente:
- Recibir datos
- Convierta estos datos a HTML, de modo que cuando se muestre este código se verá igual que cuando los datos originales se verían sin ser analizados por un analizador HTML.
- Devolver el código HTML
➥ Puedes ver la diferencia aquí
Además, ya que está preguntando esto, es posible que no entienda dónde se debe aplicar la prevención XSS. La codificación de los datos como HTML no se debe hacer cuando se reciben, sino cuando el servidor web los genera.
Por lo tanto, no deberías hacerlo así:
- El servidor recibe datos de un cliente
- El servidor escapa los datos como HTML
- El servidor procesa los datos
- El servidor envía los datos al cliente
Pero así:
- El servidor recibe datos de un cliente
- El servidor procesa los datos
- El servidor escapa los datos como HTML
- El servidor envía los datos al cliente