Ho un pezzo di codice che consente
[url]someurl[/url]
Codice BB e lo sostituisce con
<a href="someurl">someurl</a>
Ci vogliono due precauzioni per prevenire XSS.
- Sostituisce
<
,>
e"
utilizzando unstr_replace
semplice. - Utilizza un'espressione regolare per rilevare
javascript:
edata:
gestori di protocollo.
Poiché i browser decodificano il valore dell'attributo prima di interpretarlo ulteriormente, puoi aggirare il controllo regex codificando l'URL utilizzando [url]j ... [/url]
.
Quindi ricevo:
<a href="javascript:alert(1)">javascript:alert(1)</a>
Per farla breve: voglio più di un attributo steenkin (chi farebbe clic su un collegamento simile?!)
Posso in qualche modo codificare il mio "
, <
, ecc. quindi non verrà sostituito da str_replace
ma sarà comunque interpretato nel contesto di HTML?