La mia web-app prende alcune configurazioni dall'utente e le salva in un file XML (non è stato fatto per fermare XSS). L'input è codificato XML in modo che "
, &
... e tali caratteri non interrompano la struttura XML.
Quindi è necessario avere un altro livello del filtro XSS o in questo modo il salvataggio dei dati interrompe automaticamente gli attacchi XSS.
Sono consapevole del fatto che questo attacco dipende da molti e molti altri fattori come il rendering della pagina web ma consente di limitare la discussione al seguente frammento di codice, tuttavia dal modo in cui stamperò i dati molto di volta in volta sei libero di modificare
echo "<h1> Hello ".$name."</h1>"
per mostrarmi eventuali modi sbagliati di stampa dei dati.
$data = $_POST['malicious_user_supplied_data'];
$xml_encoded_data = xml_encode($data);
write_to_xml_as($xml_encoded_data,"config.xml");
------ config.xml --------
<user>
<name><script>alert("BigBang")</script></name>
</user>
--------------------------
$name = get_name("config.xml") // would return <script>alert("BigBang")</script>
echo "<h1> Hello ".$name."</h1>" // which on the browser would print <script>alert("BigBang")</script>
Per favore mostrami alcuni esempi di lavoro in cui il filtro XML sopra può essere rotto, se ce ne sono.