Puede ser suficiente, y puede que no lo sea, pero definitivamente no es una buena idea.
¿Puede un pirata informático seguir saliendo con un XSS?
Posiblemente, dependiendo de la situación.
@BenoitEsnard ya describió una situación en la que filtrar <
y >
no es suficiente: cuando la entrada del usuario se repite dentro de los atributos de las etiquetas HTML existentes, porque entonces un atacante podría agregar nuevos atributos.
Aquí hay una lista con diferentes contextos y cómo manejarlos cuando evitando XSS .
¿Hay alguna razón para no hacer esto?
Sí.
Supongamos que realmente solo haces eco del comentario dentro de <textarea>COMMENT</textarea>
al editar un comentario, y dentro de <div id=comment>COMMENT</div>
cuando se muestra un comentario, en ninguna otra parte, y no quieres ningún formato HTML, solo el texto simple tu dijiste.
Si escribes tu función correctamente, sería seguro. Pero no sería muy fácil de usar. Dependiendo del tipo de sitio web que tenga, los usuarios querrían usar <
y >
en muchas situaciones, por ejemplo: Love you <3
, 2 < 3
, use this: this->exec()
, <font> is deprecated
, >.<
, ...
Por lo tanto, definitivamente es un problema de usabilidad y posiblemente un problema de seguridad según el contexto y la corrección de la implementación .
Simplemente use las funciones que se usan comúnmente en lugar de escribir su propio mecanismo (por ejemplo, en PHP use htmlentities cuando haga eco de las entradas de un usuario en un HTML contexto en el que no desea analizar el HTML dado, use alguna biblioteca como HTMLPurifier si necesita HTML, y así sucesivamente)