Tengo un código que permite
[url]someurl[/url]
BB-Code y lo reemplaza con
<a href="someurl">someurl</a>
Se requieren dos precauciones para prevenir XSS.
- Reemplaza
<,>y"usando un simplestr_replace. - Utiliza una expresión regular para detectar los manejadores de protocolo
javascript:ydata:.
Dado que los navegadores descodifican el valor del atributo antes de seguir interpretándolo, puedes sortear la comprobación de expresiones regulares mediante la codificación de la URL usando [url]j ... [/url] .
Así obtengo:
<a href="javascript:alert(1)">javascript:alert(1)</a>
En pocas palabras, quiero más que un atributo de steenkin (¿¡quién haría clic en un enlace con ese aspecto ?!)
¿Puedo codificar de alguna manera mi " , < , etc. para que no sea reemplazado por el str_replace pero todavía se interprete en el contexto de HTML?