Cronjob / PHP-Datei / Sicherheit

Thema wurde von Anonymous, 14. Januar 2024 erstellt.

  1. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    18. August 2021
    Beiträge:
    662
    Danke erhalten:
    92
    Danke vergeben:
    273
    #1 Anonymous, 14. Januar 2024
    Zuletzt bearbeitet: 14. Januar 2024
    Hallo,

    meine Bestandsdaten werden vom Großhändler eingelesen.

    Ändert sich der Bestand eines Artikels auf Null, steht in der Spalte p_stock 0.

    Was allerdings nicht geändert wird sind die Spalten p_shipping und google_export_availability.

    Die Anpassung dieser beiden Spalten möchte ich mit einer PHP-Datei machen, in der SQL-Anweisungen stehen, sowas zum Beispiel:
    Code:
    UPDATE products_item_codes
    INNER JOIN products
    ON products_item_codes.products_id = products.products_id
    SET products_item_codes.google_export_availability_id = 3
    WHERE products.products_quantity = 0 AND products_item_codes.google_export_availability_id != 3;
    aber dann natürlich in einer PHP-Datei realisiert.

    Die PHP Datei soll über einen Cronjob (ALL-INKL) ausgeführt werden.

    Und nun komme ich zum Thema, das mich etwas beunruhigt.

    Meine Cronjo-URL bei ALL-INKL sieht so aus:

    (Link nur für registrierte Nutzer sichtbar.)

    Ich kann diese URL aber auch im Browser aufrufen, die PHP-Datei wird dann auch ausgeführt, und das ist schlecht.

    Wie kann ich es bewerkstelligen, dass als Querystring ein Token angehängt wird, und wenn das geht, wo bekomme ich den Token her?

    Kann ich mir den Token bei "API-Token / API-Tokens verwalten " generieren und dann an die URL anhängen? Dann gibt es auch noch die "Zeitgesteuerte Aufgaben", aber hier ist man eingeschränkt, was die Aufgaben betrifft. Den Timer gibt es auch noch, aber auch hier sehe ich keine Möglichkeit, für meine PHP-Datei was generieren zu lassen, da nur der Lieferstatus und Artikelstatus vorgegeben sind.


    Mir geht es im Grunde darum, den Cronjob einigermaßen SICHER zu machen, gegen hacking.

    Ich habe schon im Forum gelesen, aber konnte hier nichts konkretes finden, leider.

    Ich stehe auf dem Schlauch und wäre für Hilfe sehr dankbar.

    Gruß

    Bernd
     
  2. Dominik Späte
    Dominik Späte Erfahrener Benutzer
    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.251
    Danke erhalten:
    1.141
    Danke vergeben:
    391
    Einfachste Lösung: Man nimmt einen beliebigen Passwort-Generator. Als CronJob-URL nimmt man dann sowas hier:
    https://meinShop.de/daten_aktualisieren.php?token=XfcIE22Q3gRVqk50Wv2j8WPA

    Und in der daten_aktualisieren.php steht:
    Code:
    <?php
    if (!isset($_GET['token']) || $_GET['token'] !== 'XfcIE22Q3gRVqk50Wv2j8WPA') {
        http_response_code(403);
        exit('Forbidden');
    }
    
    Ich habe jetzt bewusst auf Sonderzeichen im Token verzichtet, um nicht mit urldecode() o.ä. hantieren zu müssen.
     
  3. Walter Lenk
    Walter Lenk Erfahrener Benutzer
    Registriert seit:
    28. September 2011
    Beiträge:
    623
    Danke erhalten:
    300
    Danke vergeben:
    113
    Guten Morgen zusammen,

    ich kann Dominik nur zustimmen. Genau so hätte ich das auch vorgeschlagen.

    Zusätzlich muss natürlich trotzdem dafür gesorgt werden dass die URL (mit Token) nicht öffentlich wird. Denn wer den Link mit dem Token kennt kann natürlich trotzdem per Browser das Script aufrufen.

    Grüße
    Walter
     
  4. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    18. August 2021
    Beiträge:
    662
    Danke erhalten:
    92
    Danke vergeben:
    273
    @Dominik Späte

    Herzlichen Dank !!!
    Danach hatte ich gesucht - die Antwort wie immer: PERFEKT, nochmals Danke.

    @Walter Lenk
    Auch hier ein Dankeschön.

    Ich hatte mich in mein Thema auch schon eingelesen, kam aber mit dem Token nicht weiter, was die ideale Lösung ist.

    Ansonsten hätte ich die PHP-Datei in ein kryptisches Unterverzeichnis gelegt und auch die PHP-Datei kryptisch benannt.

    Vielleicht hätte ich noch eine IF Abfrage mit ELSE an den Anfang der Datei gesetzt und mit einer Textdatei gearbeitet, in der ich die Zeiten (+/-) eingetragen hätte, an denen der Cronjob ausgeführt werden darf.

    Das hatte ich als Alternativen im Hinterkopf.

    Aber: Cronjob war mein Wunsch und ist das Optimum.

    Viele Grüße

    Bernd