La discusión hasta ahora ha sido sobre la protección contra la inyección de SQL y las secuencias de comandos persistentes entre sitios. Parece que estás en el camino correcto.
- Su uso de declaraciones preparadas es una "mejor práctica" para combatir la inyección SQL.
- htmlspecialchars() es un buen comienzo para evitar XSS, pero debe escapar de los datos en el esquema de codificación que sea apropiado para el lugar donde está generando los datos. OWASP tiene una página completa que trata esto:Truco de prevención de XSS (Cross Site Scripting) Hoja
. La respuesta corta:asegúrese de estar usando "
the escape syntax for the part of the HTML document you're putting untrusted data into.
"