"por lo que sé ..." es la raíz de muchos errores, al no poder codificar caracteres peligrosos. Es el enfoque de la "lista negra" para codificar solo las cosas que sabes que son peligrosas en lugar de no codificar solo las cosas que sabes que no son peligrosas.
Por ejemplo, imagine que el servidor establece el valor de un atributo de etiqueta HTML a la entrada del usuario ...
<input value=userdata>
Lo anterior es completamente legal y HTML válido. Muchas páginas web no encapsulan sus valores entre comillas, y los navegadores interpretan esto correctamente.
Ahora, suponga que utiliza la lista OWASP que incluyó en la parte superior de la página. Tenga en cuenta que el espacio no está en la lista ....
<input value=foo onclick=alert()>
Ahora tenemos un ataque exitoso. Hemos utilizado el espacio para salir del contexto anterior, luego el signo de igual para establecer un contexto donde podemos escribir javascript y paréntesis para ejecutar una función. Ninguno de estos estaba en la lista negra (rota) que mostraste.
Con este mismo ataque (usando el espacio para salir), el símbolo / se puede usar como parte del contenido de javascript como signo de división, parte de un comentario (// o / *) o de otras maneras. La hoja de trucos de evasión del filtro OWASP ( enlace ) tiene una buena lista de cadenas de ataque que usan diferentes caracteres, dependiendo de lo que sea o no está codificado, y para diferentes contextos. El carácter de guión (-) se puede usar para el marcado XUL contra mozilla.
El hecho de que no pueda ver dónde sería un problema nunca es suficiente. DEBES saber que nunca puede ser un problema antes de dejarlo pasar. Como puede ver con el ejemplo anterior, incluso OWASP no pudo predecir cierto uso válido de los datos del usuario, y sus instrucciones de codificación estaban incompletas.
Lo seguro es codificar siempre todo, pero aquello que no puede ser perjudicial. En general, es seguro codificar todos los caracteres ASCII no alfanuméricos debajo del punto de caracteres 127 y dejar que todo lo demás quede sin codificar. Menos que esto invita a errores como el descrito anteriormente.