2016-05-23 3 views
0

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 &lt und &gt ä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.

+0

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. –

+0

"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

+0

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". –

Antwort

1

Es mir wie irgendwo klingt vor dem letzten Echo ist ein htmlentities oder ein htmlspecialchars

Auf einer Seite zur Kenntnis, Echo nimmt keine Änderungen an irgendetwas es versucht, nur ausgeben, was Sie an ihm werfen, manchmal ohne Erfolg !

Verwandte Themen