El bbcode funciona así..
Yo le doy el texto con contenido bbcode al servidor
El servidor toma el bbcode y lo transforma a html internamente, por ejemplo [img] a <img src=...
El visitante cuando ve la web verá el código html no el bbcode, el servidor le mostrará <img src=...
Tampoco puedes ejecutar javascript dentro de una imagen como por ejemplo:
Eso no se puede hacer porque el explorador no lo va a ejecutar, eso solo funcionaba en internet explorer 6 porque es un caso especial, ie6 está lleno de bugs pero en los exploradores de ahora eso es imposible a menos que se encuentre un hueco de seguridad.
Lo que si se puede hacer es
Pero en ese caso un xss da igual porque se supone que un xss tienes acceso a la manipulación del codigo html de la web.
En el caso del CSRF esto es totalmente aparte, si puedes evitar en parte el xss reflejado anteponiendo tokens pero si el atacante llega a encontrar la forma de obtener el token de la persona afectada entonces puede redireccionarlo hacia ese xss tal como pasa en smf y el csrf que actualmente hay y un xss que puedes explotar en el buscador de usuario que solamente tienes acceso con un token.
Ahora, esto no sirve si es persistente pero no quiero decir que con un token que evita csrf puedes evitar un xss, para nada!, lo que debes hacer es evitar el xss reparando el problema de raiz, no de forma indirecta filtrando comillas o poniendole token porque siempre habrá alguna forma de sobrepasar esos sistemas de seguridad y si todavía el código es vulnerable a xss lo pueden explotar.
Yo le doy el texto con contenido bbcode al servidor
El servidor toma el bbcode y lo transforma a html internamente, por ejemplo [img] a <img src=...
El visitante cuando ve la web verá el código html no el bbcode, el servidor le mostrará <img src=...
Tampoco puedes ejecutar javascript dentro de una imagen como por ejemplo:
Código (html4strict) [Seleccionar]
<img src="javascript:alert(1)" />
Eso no se puede hacer porque el explorador no lo va a ejecutar, eso solo funcionaba en internet explorer 6 porque es un caso especial, ie6 está lleno de bugs pero en los exploradores de ahora eso es imposible a menos que se encuentre un hueco de seguridad.
Lo que si se puede hacer es
Código (html4strict) [Seleccionar]
<img onerror="alert(1)" src="x" />
Pero en ese caso un xss da igual porque se supone que un xss tienes acceso a la manipulación del codigo html de la web.
En el caso del CSRF esto es totalmente aparte, si puedes evitar en parte el xss reflejado anteponiendo tokens pero si el atacante llega a encontrar la forma de obtener el token de la persona afectada entonces puede redireccionarlo hacia ese xss tal como pasa en smf y el csrf que actualmente hay y un xss que puedes explotar en el buscador de usuario que solamente tienes acceso con un token.
Ahora, esto no sirve si es persistente pero no quiero decir que con un token que evita csrf puedes evitar un xss, para nada!, lo que debes hacer es evitar el xss reparando el problema de raiz, no de forma indirecta filtrando comillas o poniendole token porque siempre habrá alguna forma de sobrepasar esos sistemas de seguridad y si todavía el código es vulnerable a xss lo pueden explotar.