Ankündigung

Einklappen
Keine Ankündigung bisher.

Mit PHP und cURL auf fremde Webseite einloggen, die per RSA Token gesichert ist.

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mit PHP und cURL auf fremde Webseite einloggen, die per RSA Token gesichert ist.

    Servus Leute,
    ich möchte mich über meine Seite in das Intranet meiner Firma einloggen. Der Zugang ist gesichert durch die Eingabe eines RSA Token Codes in Verbindung mit der Personalnummer.
    Ich sehe wahrscheinlich den Wald vor lauter Bäumen nicht. Aber wie soll sowas funktionieren?

    Grüße,
    Michael


  • #2
    Das musst du den Betreiber der Seite fragen.

    Kommentar


    • #3
      Was meinst du mit "Wie soll das funktionieren"?
      PHP braucht den RSA-Code, damit es die Credentials vollständig hat.
      Standards - Best Practices - AwesomePHP - Guideline für WebApps

      Kommentar


      • #4
        Hallo rkr,

        den RSA Code vom Token habe ich ja, der liegt mir vor. Für einen Login im Intranet benötige ich einen PIN und den dargestellten Tokencode.

        Das Login Feld des Intranets hat insgesamt 4 Input Felder.

        Eins für Username (Personalnummer)
        Eins für Passwort (Tokencode oder PIN?)
        Zwei Hidden Inputs, ein davon mit value, eins davon ohne. Wie soll ich das einordnen? Wird in einem davon der serverseitig generierte Tokencode mitgeschickt und mit der Zahlenfolge, die der User bei Passwort eingibt verglichen?
        Das macht doch aber irgendwie keinen Sinn, oder? Der Vergleich kann doch eigentlich auch erst auf dem Server stattfinden, nachdem die Personalnummer über das Login-Feld geschickt wurde. Der Tokencode ist ja ein "personalisierter".

        Fragen über Fragen....

        Grüße,
        Michael

        Kommentar


        • #5
          Loge Dich normal ein. Bevor Du das machst, öffne die Debug-Konsole Deines Browser <F12> wechsle dort zum Reiter Netzwerk und schneide den Request mit der für einen gültige Anmeldung geschickt wird (damit hast Du alle nötigen Infos) und baue den dann in PHP nach.

          Kommentar


          • #6
            Hallo Messier 1001,

            vielen Dank, das war der entscheidende Tip. Ich konnte mich jetzt zwar einloggen, werde aber sofort wieder ausgeloggt, unser CRA macht einen automatischen Logout nach einer gewissen Zeit.
            Ich denke mal, dass ich diesen Timer auf Null setzen muss, richtig. Wo ist sowas gespeichert?

            Kommentar


            • #7
              Timeouts werden idr Serverseitig hinterlegt. Da kommst du nicht dran. Aber warum sollte das eine Rolle spielen?
              Wenn du dich automatisiert einloggst, deine Tasks abklapperst und dich danach wieder ausloggst, sollte das doch gehen.
              Du brauchst halt für jeden Login-Vorgang einen aktuellen RSA-Code. Ich würde den Token vor eine Webcam bauen und dann sowas wie Tesseract für die Interpretation der Zahlen nutzen. Solange du im erlaubten Besitz des Tokens bist und die so eine Praxis nicht ausdrücklich untersagt wird, sehe ich da rechtlich kaum Probleme. Aber ich bin bei sowas eigentlich auch eher der pragmatische Typ...
              Standards - Best Practices - AwesomePHP - Guideline für WebApps

              Kommentar


              • #8
                So, das Script sieht mittlerweile so aus und macht bisher folgendes:
                Eine Datei download.txt wird erstellt und mit einer 1 gefüllt. Ist die Variable $content lediglich ein Rückgabewert für die erfolgreiche Ausführung von curl_exec? Aber wo ist denn dann der Inhalt der Seite, die weiter oben definiert wurde?

                Grüße,
                Michael

                PHP-Code:
                <?PHP

                if (isset($_POST["button"])){

                $username $_POST["username"];
                $password = (int)$_POST["password"];
                $pin = (int)$_POST["pin"];
                $loginUrl 'https://xyz.com/eineseite/login.cgi';

                $var "username=" $username .  "&password=" $pin $password;




                //init curl
                $ch curl_init();

                //Set the URL to work with
                curl_setopt($chCURLOPT_URL$loginUrl);

                // ENABLE HTTP POST
                curl_setopt($chCURLOPT_POSTTRUE);

                //Set the post parameters
                curl_setopt($chCURLOPT_POSTFIELDS$var);

                //Handle cookies for the login
                curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');

                //Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
                //not to print out the results of its query.
                //Instead, it will return the results as a string return value
                //from curl_exec() instead of the usual true/false.
                curl_setopt($chCURLOPT_RETURNTRANSFER1);

                //execute the request (the login)
                $store curl_exec($ch);


                }

                //the login is now done and you can continue to get the
                //protected content.
                $ch curl_init();

                //set the URL to the protected file
                $neueUrl "https://xyz.com/eineseite/inhalt.cgi";

                curl_setopt($chCURLOPT_URL$neueUrl);
                curl_setopt($chCURLOPT_RETURNTRANSFERfalse);
                //execute the request
                $content curl_exec($ch);

                curl_close($ch);

                //save the data to disk
                file_put_contents('downloads/download.txt'$content);




                ?>

                Kommentar


                • #9
                  Sorry, aber die Lösung ist mal alles andere als fortgeschritten.

                  Aber das hier feier ich gerade ein wenig:
                  PHP-Code:
                  $password = (int)$_POST["password"]; 
                  Standards - Best Practices - AwesomePHP - Guideline für WebApps

                  Kommentar


                  • #10
                    Erhelle mich....

                    Kommentar


                    • #11
                      $password kann nur Ganzzahlen enthalten, welche nicht sonderlich als Passwort geeignet sind.

                      Kommentar


                      • #12
                        $password ist das Ergebnis eines Tokens.....

                        Kommentar


                        • #13
                          Zitat von mentle Beitrag anzeigen
                          $password ist das Ergebnis eines Tokens.....
                          Warum heißt es dann password und nicht token?

                          Davon abgesehen ist ein Token im Integer-Bereich ziemlich schwach und wohl als Sicherheitslücke zu betrachten. Ein Integer hat 32 Bit. Zeitgemäß wären Token mit 256 Bit oder mehr.

                          Kommentar


                          • #14
                            Also: $password heißt $password, weil es die Seite, wo es hingeposted wird, so erwartet. Darüber hinaus werden noch weitere Parameter gesendet, die ich hier aus Gründen der Übersicht und aus datenschutzrechtlichen Gründen entfernt habe. Das sind ausserdem Dinge, die ausserhalb meines Einflussbereichs liegen, daher ist es müssig, darüber zu diskutieren.

                            Mich würde allerdings brennend interessieren, warum das Script nicht das tut, was ich von ihm erwarte, nämlich den Inhalt der Seite https://xyz.com/eineseite/inhalt.cgi in der Datei downloads.txt zu speichern. Würde mich freuen, wenn wir hier weitermachen könnten. Ansonsten möchte ich mich bereits jetzt für die dargebotene Hilfe bedanken.

                            Kommentar


                            • #15
                              Zitat von mentle Beitrag anzeigen
                              Mich würde allerdings brennend interessieren, warum das Script nicht das tut, was ich von ihm erwarte, nämlich den Inhalt der Seite https://xyz.com/eineseite/inhalt.cgi in der Datei downloads.txt zu speichern.
                              Indem man Zeile für Zeile das Script durchgeht und schaut, ob es sich so verhält, wie erwartet. Die Zeile, wo das Verhalten anfängt abzuweichen, ist ein guter Anhaltspunkt für die Fehlersuche.

                              Kommentar

                              Lädt...
                              X