Ich möchte mich mit Cross-Site-Scripting vertraut machen, also habe ich versucht, einige anfällige Beispiele zu nutzen, die sie uns im Unterricht zur Verfügung gestellt haben. Im Moment habe ich ein Formular, dessen Wert in $_REQUEST['in']
von PHP gespeichert ist, wenn das Formular gesendet wird, und dann an anderer Stelle auf der Seite gedruckt, wenn die Antwort zurückkommt. Um seinen Inhalt zu drucken, wird eine andere Variable $var
verwendet, um es von $_REQUEST['in']
abzurufen, und dann wird echo $var
verwendet.Verwendung von echo zur Ausgabe von JavaScript-Code aus der PHP-Variablen
Jetzt ist meine Wette auf das Schreiben des JS-Codes in $_REQUEST['in']
, so dass, wenn es zurückkommt, es in der HTML-Datei gedruckt und ausgeführt wird. Das Problem ist, dass die echo
die Zeichen <
und >
in ihre Entsprechung <
und >
ändert, wodurch der JS-Code im Klartext angezeigt wird. Es wird keine HTML-Codierungsmethode verwendet, deshalb bin ich etwas verwirrt. Kannst du mir irgendwelche Hinweise geben, warum das passiert?
Dies ist der Abschnitt der Datei, in dem $var
verwendet wird.
<div id="feedback" class="alert alert-warning">
<?php echo $var; ?>
</div>
Ich überprüfte den Code auf der Suche nach einigen Encoding-Methoden, aber ich sehe keine. Sie enthalten this JS, aber ich denke nicht, dass die Codierung dort erfolgt, da es uns nicht direkt zur Verfügung gestellt wird.
Sie werden wahrscheinlich codiert, um diesen speziellen Cross-Site-Scripting-Angriff zu verhindern. Wo wird das 'echo $ var;' verwendet? Das könnte einen Hinweis darauf geben, wie ein Angriff implementiert werden kann. –
"Das Problem ist, dass das Echo die Zeichen' <' and '> 'in das entsprechende & lt und & gt; -' echo' ändert. Es wird ein früherer Schritt sein, der das tut. Das Blockieren von XSS ist ein großer Teil davon. – Quentin
Haben Sie den Quellcode zur PHP-Seite? Dort muss irgendwo ein 'htmlspecialchars()' (oder 'htmlentities()') Aufruf sein. Es sei denn, sie werden in der Anfrage * in "<"/">" "umgewandelt". –