Ralf: Authorisierung nach Aufruf aus Javascript prüfen

Beitrag lesen

Wenn die 1.php nur dazu da sein soll, einen Accountnamen aus dem HTML zu extrahieren - dann kann ich doch auch als unberechtigter Nutzer diesen Accountnamen in meinem HTML unterbringen - oder wie willst du das verhindern?

Kann er nicht, da er keinen Einfluss auf die Seite hat, wo der Accountname steht. Er hat Einfluss auf eine Seite, dies von dieser geöffnet wird und kann dort u.a. den Aufruf für meinen Service unterbringen.
Den Accountnamen bekomme ich via opener aus der öffnenden Seite. Das ist zuverlässig.
Der Nutzer könnte aber den Code auf der geöffneten Seite so abändern, dass gleich die 2.php mit dem "falschen" Accountnamen aufgerufen wird. Er müsste zwar auch noch ein paar weitere Zeilen hinzufügen, was aber im Vergleich zum gelieferten Code trivial ist.

Dein Problem ist, dass die Zugangsdaten über den Client gehen sollen/müssen - und damit sind sie dort auch beliebig kopier- und manipulierbar.

Es sind ja im eigentlichen Sinne keine Zugangsdaten, sondern eine Information, die aus einer HTML-Seite extrahiert wird.

Vielleicht beschreibe ich das Problem mal anders:

  1. Ein Dienstleister (das bin nicht ich) stellt eine Anwendung zur Verfügung, mit der Daten des Benutzers angezeigt werden können. Dafür hat der Benutzer einen Accountnamen, welcher auf den Seiten des Dienstleisters zu finden ist.

  2. Der Benutzer fordert eine Datenanzeige an. Diese wird in einem Popup geöffnet. Der Benutzer kann durch Einstellungen Einfluss auf die Daten nehmen. U.a. kann dort HTML "injiziert" werden (ungeprüft - und damit auch Javascript).

  3. Dieses Javascript liegt auf meinem Server und wird von einer PHP-Routine geliefert (1.php).

  4. Die 1.php sendet Javascript. Dieses extrahiert den Accountnamen aus dem öffnenden Fenster und ruft eine 2.php mit dem Accountnamen als Parameter auf.

  5. Die 2.php prüft den Accountnamen und liefert in Javascript geschriebene Service-Routinen zurück, wenn der Benutzer als berechtigt erkannt wird.

Bis zu 3) gibt es keine Änderungsmöglichkeit. 4+5 sind mein Lösungsansatz und ich habe hier gefragt, welche Möglichkeiten es gibt. Ich habe auch bereits geprüft, den gesamten Inhalt der geöffneten Seite per HTTP POST an meinen Server zu schicken, um dort das Ergebnis zu erzeugen. Das ist aber bei der möglichen Datenmenge nicht besonders effektiv und wurde daher verworfen.
Die Verarbeitung der Daten _muss_ auf dem Client erfolgen und daher _muss_ ich Javascript zurückgegeben.

Du versuchst etwas zu schützen, dass auf Grund seiner quelloffenen Konzeptionierung nicht zu schützen ist.

Ich will ja auch nur versuchen, die Barriere möglichst hoch anzusetzen.

Wie ich bereits in meinem ersten Posting geschrieben habe, bin ich bzgl. PHP noch Anfänger und habe vielleicht eine Möglichkeit übersehen, weil ich sie noch gar nicht kenne.

Ralf