Dynamische Javascript-Seite auslesen
Bobby
- php
Moin
Nach langer Abstinenz vom Forum komm ich mal wieder mit nem Problemchen daher.
Ich lese mittels Curl und Fsockopen+fgets die Ergebnisseite eines POST-Formulares aus. Es wird ein Javascript-innerHTML dabei abgesetzt. Ich möchte nun nicht den HTML-Code mit dem Javascript zurückerhalten, sondern den durch innerHTML erzeugten Code auf einen String prüfen.
Wie kann ich also auf den von Javascript erzeugten Code mittels PHP zugreifen?
Ich hoffe ihr habt verstanden was ich will.
Gruß Bobby
Hi,
Ich lese mittels Curl und Fsockopen+fgets die Ergebnisseite eines POST-Formulares aus. Es wird ein Javascript-innerHTML dabei abgesetzt. Ich möchte nun nicht den HTML-Code mit dem Javascript zurückerhalten, sondern den durch innerHTML erzeugten Code auf einen String prüfen.
Wie kann ich also auf den von Javascript erzeugten Code mittels PHP zugreifen?
Kommt drauf an.
Der "direkte" Weg wäre für dich, einen JS-Parser zu bauen, welcher das in der Seite enthaltene JS für dich ausführt und dessen Ergebnisse du dann abgreifen kannst.
Andererseits: JS bekommt für die Ausgabedaten irgendwo Rohdaten her. Entweder stehen diese hardcodiert in der Seite oder sie kommen von irgendwo anders (als Ergebnis eines AJAX-Requests z.B.).
Ich würde in so einem Fall probieren, die Rohdaten abzugreifen und die Konvertierung würde ich dann selber durchführen. In Falle von AJAX-Requests gibt es vielleicht sogar eine Schnittstelle, die du anzapfen kannst.
In allen Fällen: nimm mit dem Seitenbetreiber Kontakt auf und frage ihn, ob du seine Daten nutzen darfst.
Bis die Tage,
Matti
Moin
Der "direkte" Weg wäre für dich, einen JS-Parser zu bauen, welcher das in der Seite enthaltene JS für dich ausführt und dessen Ergebnisse du dann abgreifen kannst.
Naja.... Es geht eigentlich nicht darum einen JS-Code mitzubenutzen, sondern dessen tatsächliche Ausführung auf der Zielseite zu überwachen. Ich dachte mir schon dasdies nicht so einfach geht, da ja PHP nicht JS ausführt. Aber ich dachte da gibts eventuell eine Erweiterung oder ähnliches.
In allen Fällen: nimm mit dem Seitenbetreiber Kontakt auf und frage ihn, ob du seine Daten nutzen darfst.
Um das rechtliche musst du dir keine Sorgen machen. Das ist definitiv abgeklärt und alles korrekt.
Gruß Bobby
Hi,
Naja.... Es geht eigentlich nicht darum einen JS-Code mitzubenutzen, sondern dessen tatsächliche Ausführung auf der Zielseite zu überwachen.
Was ist denn die „Zileseite“, wenn du die Ressource per cURL anforderst?
Und „überwachen“ auf *was* eigentlich?
Was soll *eigentlich* bezweckt werden? Bitte *unabhängig* von der aktuellen Technik beschreiben.
Vermutlich wäre die Zeit sinnvoller darin investiert, eine vernünftige Schnittstelle zu erstellen.
MfG ChrisB
Moin
Naja.... Es geht eigentlich nicht darum einen JS-Code mitzubenutzen, sondern dessen tatsächliche Ausführung auf der Zielseite zu überwachen.
Was ist denn die „Zileseite“, wenn du die Ressource per cURL anforderst?
Und „überwachen“ auf *was* eigentlich?
Na irgendeine Seite die POST-Daten empfängt und entsprechend ausgibt. Es soll überprüft werden ob gesendeter JS-Code auf der Zielseite ausgeführt wird.
Was soll *eigentlich* bezweckt werden? Bitte *unabhängig* von der aktuellen Technik beschreiben.
Es soll ein automatisierter Sicherheitscheck für internen Gebrauch werden. (XSS-Check) bei dem ich mir natürlich vorher die entsprechende erlaubnis einhole.
Vermutlich wäre die Zeit sinnvoller darin investiert, eine vernünftige Schnittstelle zu erstellen.
Darum gehts eben nicht.
Gruß Bobby
Hi!
Was ist denn die „Zielseite“, wenn du die Ressource per cURL anforderst?
Na irgendeine Seite die POST-Daten empfängt und entsprechend ausgibt. Es soll überprüft werden ob gesendeter JS-Code auf der Zielseite ausgeführt wird.
Die "Zielseite" führt nichts aus. Eine Response ist lediglich ein Stück Text. Erst die Interpretation im Browser kann selbigen dazu veranlassen, irgendetwas auszuführen. In deinem Fall ist curl dein "Browser". Kann der Javascript ausführen? Nein. Dein Vorhaben ist damit nicht realiserbar. Du brauchst einen Javascript-Interpreter, der in einem Stück Software intergriert ist, das dir das DOM des HTML-Codes erzeugt, sonst ist der Javescript-Code nur eingeschränkt ausführbar (ohne alle DOM-interagierenden Teile).
Es soll ein automatisierter Sicherheitscheck für internen Gebrauch werden. (XSS-Check) bei dem ich mir natürlich vorher die entsprechende erlaubnis einhole.
Das ist zu allgemein formuliert. Was genau soll da geprüft werden?
Lo!
Moin
Die "Zielseite" führt nichts aus. Eine Response ist lediglich ein Stück Text. Erst die Interpretation im Browser kann selbigen dazu veranlassen, irgendetwas auszuführen. In deinem Fall ist curl dein "Browser". Kann der Javascript ausführen? Nein. Dein Vorhaben ist damit nicht realiserbar. Du brauchst einen Javascript-Interpreter, der in einem Stück Software intergriert ist, das dir das DOM des HTML-Codes erzeugt, sonst ist der Javescript-Code nur eingeschränkt ausführbar (ohne alle DOM-interagierenden Teile).
Wie gesagt, das dachte ich mir schon. Wollts nur noch mal bestätigt sehn.
Es soll ein automatisierter Sicherheitscheck für internen Gebrauch werden. (XSS-Check) bei dem ich mir natürlich vorher die entsprechende erlaubnis einhole.
Das ist zu allgemein formuliert. Was genau soll da geprüft werden?
Warum zu allgemein formuliert? Es soll geprüft werden ob über ein Formular einer Webseite XSS möglich ist. Punkt.
Ich kam grad auf den Gedanken, das ich ja auch nur die korrekte Schreibweise des JS-Codes prüfen brauch. Also ob nicht geslasht oder keine Sonderzeichen umgewandelt worden. Dann wird dieser ja in der Regel von Browsern ausgeführt. Das könnte ein Ansatz sein.
Danke erstmal für Eure Antworten
Gruß Bobby
Hi!
Es soll ein automatisierter Sicherheitscheck für internen Gebrauch werden. (XSS-Check) bei dem ich mir natürlich vorher die entsprechende erlaubnis einhole.
Das ist zu allgemein formuliert. Was genau soll da geprüft werden?
Warum zu allgemein formuliert?
Weil es sehr viele Arten von Prüfungen und Szenarien gibt, für die du eine konkrete Lösung haben möchtest, also musst du das Problem schon etwas konkreter beschreiben.
Es soll geprüft werden ob über ein Formular einer Webseite XSS möglich ist. Punkt.
Das heißt also konkret, dass du mit curl auf eine Formularverarbeitung losgehst, auf die du keinen Einfluss hast. Denn wenn du den hättest, könntest du mit der Beachtung des oder der Kontextwechsel den ganzen Aufwand sparen. Die Verarbeitung erstellt ein Resultat, das bestimmten Regeln folgen muss, ansonsten ist es eine nutzbare XSS-Lücke. Das heißt also, dass deine kritischen Eingaben nicht 1:1 in der Ausgabe landen dürfen, sondern maskiert sein müssen. Dazu braucht man lediglich Stringverarbeitung, um die Stelle, an der die Eingabe eingefügt wird, auszuwerten.
Ich kam grad auf den Gedanken, das ich ja auch nur die korrekte Schreibweise des JS-Codes prüfen brauch. Also ob nicht geslasht oder keine Sonderzeichen umgewandelt worden. Dann wird dieser ja in der Regel von Browsern ausgeführt. Das könnte ein Ansatz sein.
Genau das. Du musst schauen, was in der Ausgabe erwartet wird und ob das den gültigen Syntaxregeln entspricht.
Lo!
Moin
Genau das. Du musst schauen, was in der Ausgabe erwartet wird und ob das den gültigen Syntaxregeln entspricht.
Da war ich ja schon auf dem richtigen Weg, und muss nichtmal ein JS übergeben sondern nur einen entsprechenden String. Danke nun weiß ich weiter... ;)
Gruß Bobby