Stefan Welscher: Mit PHP auf Bankkontodaten zugreifen?

Hi,
ich soll für n Kollegen n PHP Script machen, welches unter anderem Umsätze auf seinem Bankkonto checken soll und bei Zahlungseingang automatisch mails versendet.
Was kennt ihr da für Möchglichkeiten das zu realisieren?
Was brauch ich zur Realisierung?

Danke!

  1. Hi!

    Umsätze auf seinem Bankkonto checken soll und bei Zahlungseingang automatisch mails versendet.

    Im Prinzip ganz einfach: Daten holen, Daten auswerten, Mail verschicken.
    Aber ich schätze mal, ich würde sowas nicht machen...

    Was kennt ihr da für Möchglichkeiten das zu realisieren?

    Welche Möglichkeiten gibt es denn, auf die Kontodaten zuzugreifen?
    Login beim Onlinebanking der Bank?
    Dann müßte sich das PHP-Script dort einloggen. Prinzipiell ist es natürlich ganz einfach HTTP-Requests an einen Server zu schicken, aber ich bezweifle, daß das gut ist...
    Dann müßten ja die Zugangsdaten (Kontonummer, Passwort, evtl. TAN-Nummern) irgendwo in dem PHP-Script abgelegt werden. Wo soll das liegen? Auf einem Server bei irgendeinem Provider? Also ich würde solche Daten niemals irgendwo rumliegen lassen...
    Sollte PHP allerdings bei deinem Bekannten lokal installiert sein, dann kann man von dort aus natürlich, eine Verbindung per SSL herstellen, eine Seite bei der Bank anfordern und dann die gewünschten Daten daraus extrahieren.
    Dazu bräuchtest Du dann nur ein paar Stringfunktionen.
    Zu Verschicken einer Mail würdest du dann die Funktion mail() benötigen.
    Zur Anwendung dieser Funktionen: PHP-Handbuch.

    Was brauch ich zur Realisierung?

    Erst mal solltest Du dir überlegen, ob es klug ist, was Du da machen willst. Kontodaten sollte man nicht für andere zugänglich deponieren...
    Naja und sonst brauchst Du halt nichts besonderes.
    Socket öffnen, Seite holen, Daten extrahieren und auswerten.

    Wenn Du irgendwo nicht weiterkommst, solltest du eine präzisere Frage stellen.

    Gruß, rob

    1. Hi!

      Dann müßten ja die Zugangsdaten (Kontonummer, Passwort, evtl. TAN-Nummern)

      TANs werden bei keinem mir bekannten Online-Banking-System zur Umsatzabfrage benötigt.

      Gruß aus Iserlohn

      Martin

      1. Hi Martin.

        TANs werden bei keinem mir bekannten Online-Banking-System zur Umsatzabfrage benötigt.

        Schon klar. Ich habe deswegen auch _evtl._ davor geschrieben, da nicht genau angegeben wurde, was denn gemacht werden soll. Das Script sollte nämlich nicht nur eine Umsatzabfrage machen, sondern "_unter anderem_ Umsätze auf seinem Bankkonto checken".
        Aber egal was man da jetzt ablegt - Auch Kontonummer und Zugangsdaten zum Onlinebanking würde ich schon in keinem Fall für andere zugänglich deponieren.

        Gruß, rob

  2. n'abend,

    Was kennt ihr da für Möchglichkeiten das zu realisieren?
    Was brauch ich zur Realisierung?

    viele Banken bieten mittlerweile über ihr onlinebanking-interface die möglichkeit an, umsätze als csv- (oder gar xml-) datei runterzuladen...

    kläre mit deiner bank ob diese möglichkeit besteht.
    kläre ob du dich automatisch auf deren system einloggen kannst (das könnte zum genickbrecher werden)

    wenn beides geht ist der rest ein kinderspiel...

    die csv-datei vom bankkserver holen.. und mittels der csv-funktionen in php schön einfach auslesen...

    mach dir aber nicht zu viele hoffnungen

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    1. Moin!

      Manche aber auch nur im MT940 (Swift)- Format. Hier dessen Beschreibung:
      http://www.mmsgmbh.de/buchfuehrung/format_mt940.html

      Einen "parser" dafür habe ich auch schon geschrieben, will den aber nicht veröffentlichen: Grund: der mag funktionieren ist aber nicht "schön". Bei Interesse versende ich den aber per e-Mail. Das Skriptchen trägt die ermittelten Daten in eine Datenbank ein.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
  3. Hi!

    ich soll für n Kollegen n PHP Script machen, welches unter anderem Umsätze auf seinem Bankkonto checken soll und bei Zahlungseingang automatisch mails versendet.
    Was kennt ihr da für Möchglichkeiten das zu realisieren?

    1. per HBCI - wird mWn nicht von PHP unterstützt.

    2. über das "normale" Online-Banking

    also
    URL öffnen (mittels fsockopen - siehe auch die Userkommentare zu verschlüsselten Seiten) - allerdings musst du diese erstmal rausbekommen, beim Sparkassen-Online-Banking hab ich noch keinen Direktlink zur Umsatzabfrage gefunden, da kann man die Umsatzabfrage jeodch direkt als Startseite nach dem Login einstellen.
     Ausserdem müssen beim Aufruf der URL auch gleich die Login-Daten mitgegeben werden (mittels fputs POST-Parameter mitschicken).

    Dann hast du irgendwann die Seite als String vorliegen. Diesen musst du dann nur noch mit Vorgängerversionen vergleichen (die z.B. in ner Datenbank gespeichert sind) und dann die mail verschicken.

    Was brauch ich zur Realisierung?

    nen Editor und ne Menge Zeit.

    Gruß aus Iserlohn

    Martin

    1. Hi!

      Das ganze interessiert mich jetzt doch genauer :-)

      URL öffnen (mittels fsockopen - siehe auch die Userkommentare zu verschlüsselten Seiten)

      Ich bin jetzt soweit, dass die erste URL geöffnet wird und auch der Weiterleitung gefolgt wird (von https://bankingportal.sparkasse-iserlohn.de/browserbanking/login.jsp?BLZ=44550045 nach Location: https://bankingportal.sparkasse-iserlohn.de/browserbanking/Login?BLZ=44550045).

      Allerdings springt mir nun der freundliche Hinweis entgegen, dass mein Browser keine 128-Bit-Verschlüsselung unterstützt. Wie krieg ich PHP dazu, mit 128 Bit zu verschlüsseln?

      Gruß aus Iserlohn

      Martin

      P.S.: bisheriger Code, vllt. auch für den OP interessant:

      <?php  
      $host = "bankingportal.sparkasse-iserlohn.de";  
      $path = "/browserbanking/login.jsp?BLZ=44550045";  
        
      $server = "ssl://" . $host;  
        
      $fp = fsockopen ($server, 443, $errno, $errstr, 60);  
      if (!$fp) {  
         echo "$errstr ($errno)<br />\n";  
      } else {  
         fputs ($fp, "GET ". $path. " HTTP/1.1\r\n");  
         fputs ($fp, "Host: ". $host. "\r\n");  
         fputs ($fp, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\r\n");  
         fputs ($fp, "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n");  
         fputs ($fp, "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n");  
         fputs ($fp, "Accept-Encoding: gzip,deflate\r\n");  
         fputs ($fp, "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");  
         fputs ($fp, "Keep-Alive: 300\r\n");  
         fputs ($fp, "Connection: keep-alive\r\n\r\n");  
         while (!feof($fp)) {  
             $zeile = fgets($fp);  
             echo $zeile;  
        
       /*Cookie akzeptieren*/  
        
             if(strpos($zeile, 'Set-Cookie: ')!==false){  
                $cookie = substr($zeile, strlen('Set-Cookie: '), strpos($zeile, ";Path") - strlen('Set-Cookie: '));  
                echo $cookie. "\n";  
             }  
        
        
       /*Weiterleitung einlesen*/  
        
             if(strpos($zeile, 'Location: https://')!==false){  
                $forward = substr($zeile, strlen('Location: https://'. $host));  
                echo $forward. "\n";  
             }  
         }  
         fclose($fp);  
      }  
        
      $fw = fsockopen ($server, 443, $errno, $errstr, 60);  
      if (!$fw) {  
         echo "$errstr ($errno)<br />\n";  
      } else {  
         fputs ($fw, "GET ".$forward." HTTP/1.1\r\n");  
         fputs ($fp, "Host: ". $host. "\r\n");  
         fputs ($fw, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\r\n");  
         fputs ($fw, "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n");  
         fputs ($fw, "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n");  
         fputs ($fw, "Accept-Encoding: gzip,deflate\r\n");  
         fputs ($fw, "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");  
         fputs ($fw, "Keep-Alive: 300\r\n");  
         fputs ($fw, "Connection: keep-alive\r\n");  
         fputs ($fw, "Cookie: ".$cookie."\r\n\r\n");  
         while (!feof($fw)) {  
             $zeile = fgets($fw);  
             echo $zeile;  
             if(strpos($zeile, 'Set-Cookie: ')!==false){  
                $cookie = substr($zeile, strlen('Set-Cookie: '), strpos($zeile, ";Path") - strlen('Set-Cookie: '));  
                echo $cookie. "\n";  
             }  
             if(strpos($zeile, 'Location: https://')!==false){  
                $forward = substr($zeile, strlen('Location: https://'. $host));  
                echo $forward. "\n";  
             }  
         }  
         fclose($fw);  
      }  
      ?>
      
      1. Hallo Martin,

        Allerdings springt mir nun der freundliche Hinweis entgegen, dass mein Browser keine 128-Bit-Verschlüsselung unterstützt.

        das ist ja noch "harmlos". Ich hab mich vor einiger Zeit 'ne Weile mit der EDV-Abteilung meiner Bank (Postbank) gezofft, weil ich deren Online-Kontaktformular nicht nutzen kann. Die schalten eine Browserabfrage davor, und lassen angeblich

        * Internet Explorer ab Version 5.0
         * Netscape ab Version 7
         * Mozilla oder Firefox

        als Browser zu. Der Witz ist, dass ich weder mit IE5.5, noch IE6.0, noch Firefox 1.04 reinkomme. Ich bekomme nur den Hinweis, dass ich doch bitte einen der o.g. Browser verwenden möge (das normale Onlinebanking funktioniert aber tadellos, hier machen sie keine Browserabfrage).

        Mittlerweile weiß ich, dass die Postbank beim Aufruf des Kontaktformulars einfach stur den User Agent prüft: Wenn man die Verschleierung desselben abstellt, geht's mit all den angegebenen Browsern - und sogar mit Opera, wenn er sich als IE ausgibt, obwohl sie behaupten, Opera werde nicht unterstützt.

        Ich halte es ja für eine Unverschämtheit, auf eine so unzuverläsige Angabe wie den HTTP-User-Agent die Entscheidung zu gründen, ob der Besucher eine bestimmte Seite sehen darf oder nicht. Noch dazu, wenn es um so harmlose Dinge wie ein Kontaktformular geht, dass eigentlich JEDEM zur Verfügung stehen sollte.
        Leider haben sie auf alle meine Beschwerden nur ausweichend geantwortet und sich dumm gestellt. Bis heute also keine Besserung.

        So long,

        Martin  [der Namensvetter aus Backnang]

        1. Hi!

          Allerdings springt mir nun der freundliche Hinweis entgegen, dass mein Browser keine 128-Bit-Verschlüsselung unterstützt.
          das ist ja noch "harmlos".

          Und meiner Meinung nach auch gerechtfertigt.

          Ich hab mich vor einiger Zeit 'ne Weile mit der EDV-Abteilung meiner Bank (Postbank) gezofft, weil ich deren Online-Kontaktformular nicht nutzen kann.
          Leider haben sie auf alle meine Beschwerden nur ausweichend geantwortet und sich dumm gestellt. Bis heute also keine Besserung.

          Was bist du auch bei der Postbank? *scnr*

          Aber trotzdem weiß ich noch nicht, wie ich PHP die geforderte Verschlüsselungsstärke beibringe (wir werten übrigens nicht den UA-String aus, sondern entscheiden über die tatsächliche Verschlüsseluingsstärke, wer reindarf und wer nicht).

          phpinfo() gibt:

          openssl
          OpenSSL support  enabled
          OpenSSL Version  OpenSSL 0.9.7g 11 Apr 2005

          Gruß aus Iserlohn

          Martin

          1. Hallo,

            Allerdings springt mir nun der freundliche Hinweis entgegen, dass mein Browser keine 128-Bit-Verschlüsselung unterstützt.
            das ist ja noch "harmlos".

            Und meiner Meinung nach auch gerechtfertigt.

            Ja, klar - das meinte ich mit "harmlos": Verständlich und nachvollziehbar.

            Was bist du auch bei der Postbank? *scnr*

            Tja, vor Jahren war ich bei der Spaßkasse - und ich bin froh, dass ich mit dem Laden inzwischen nichts mehr zu tun habe.

            (wir werten übrigens nicht den UA-String aus, sondern entscheiden über die tatsächliche Verschlüsseluingsstärke, wer reindarf und wer nicht).

            So ist es auch sinnvoll. Aber ihr verwehrt hoffentlich nicht aufgrund mangelnder Verschlüsselung den Zugang zu einem Kontaktformular?

            So long,

            Martin