Cita: Si el usuario enviaba carateres especiales, sobre todo de inyeccion SQL y XSS, como las comillas
" ", o los mayorQue menorQue > <, esta era mi preocupacion.
Es una preocupación bastante mal enfocada.
Lo correcto es dejar intactos los datos.
¿Por qué?
1. SQL
Porque una inyección de SQL no se ejecutará jamás por sí misma, sólo ocurre si no preparas las consultas, así que si armas tus consultas de SQL a mano ahí está el problema.
Por eso debes escapar las consultas, usando PDO por ejemplo, pero jamás alterando la información original: ese es un error bastante común pensar así.
2. XSS
De igual forma, una inyección de XSS jamás se ejecutará por sí misma, sólo ocurre si imprimes la información directamente al documento, sin precaución alguna y sin escapar apropiadamente dicho HTML en caso de permitirlo.
Por eso debes, o bien, eliminar todo el HTML al recibir la información (en caso de limitarlo) o bien, filtrarlo adecuadamente antes de guardar: jamás debes alterar la naturaleza original de la información.
Porque además, ¿sabes qué?
La función htmlspecialchars() termina incrementando la cantidad de caracteres necesarios para preservar información en la base de datos
¡de manera inútil!
Una inyección de SQL jamás ocurrirá si preparas tus consultas, así como algo de HTML+XSS no hace daño en la base de datos.
Sólo hay que preocuparse de él al momento de enviarlo al navegador, así como al momento de ejecutar las consultas.
Lo del césar al césar pues, no inventes técnicas innecesarias.
Así que no le veo lo "obvio" lo que planteas.
Estás mal, muy mal.