So sieht ein sicherer Cronjob aus
Ein sicherer Cronjob...
- ist gut versteckt
Man wird ihn nicht unter "deine-site.de/cronjob.php" finden, sondern eher unter "deine-site.de/php/ext/cronjob52533253_r7nv62b9pv.php".
- wird nicht per robots.txt ausgeschlossen
Wer verhindern möchte, dass der Cronjob in den Google Index aufgenommen wird, könnte ja auf die Idee kommen diesen mit der robots.txt auszuschließen, leider können auch potenzielle Angreifer die Textdatei ausfindig machen und so die URL herausfinden.
- wird nicht verlinkt
Wäre auch noch schöner, würde man die schön lange URL auch noch auf der eigenen Website verlinken.
- ist geheim oder prüft die Aufrufe
Die URL ist möglichst nur dem Webmaster bekannt. Alternativ lässt sich ein Cronjob-Skript auch so konfigurieren, dass es die Aufgaben - unabhängig von den tatsächlichen Aufrufen - z.B. maximal 1x stündlich ausführt (siehe "Alternative" unten).
- ändert sich regelmäßig
Um ganz sicher zu gehen, kannst du die URL auch nach einer gewissen Zeit ändern.
Denke daran, die neue URL auch dem Cronjob Anbieter mitzuteilen beziehungsweise sie dort zu ändern.
- nutzt einen sicheren Anbieter
Wer seinen Cronjob bei einem 0815 Anbieter ablagert, geht womöglich ein Sicherheitsrisiko ein.
Wir haben nicht nur beschrieben wie du Anbieter vergleichen kannst, sondern auch noch einige Anbieter getestet.
- ist geschützt
Um deinen Cronjob zu schützen gibt es verschiedene Möglichkeiten. Du kannst den Aufruf zum Beispiel mit Hilfe einer .htaccess nur für spezielle IPs zu lassen oder den Login via .htaccess nutzen.
Wichtig ist hierbei, dass der Cronjob Anbieter, die jeweilige Funktion unterstützt.
Außerdem könntest du auch noch einfach ein paar Parameter vorraussetzen, zum Beispiel: "deine-site.de/php/ext/
cronjob52533253_r7nv62b9pv.php?user=cronjobde&passwort=GhsjZasmah123".
Alternative: Überprüfung der Aufrufe
All die hier genannten Möglichkeiten sind interessant, um Deinen Cronjob zu schützen. Es gibt allerdings noch eine einfache Alternative, die ich Dir hier vorstellen möchte.
Entscheidend bei einem Cronjob ist häufig nur, dass er aufgerufen wird und zwar zu den richtigen Zeiten. Es muss also verhindert werden, dass jemand durch einen zusätzlichen Aufruf von außen den Cronjob erneut aufruft.
Das kannst Du verhindern, indem Du eine kryptische URL wählst und sie mit einem Passwort schützt oder aber Du interagierst in dem Skript mit einer Datenbank oder eine Datei. Dort wird die letzte Aufruf-Stunde abgefragt. Soll dein Cronjob einmal pro Stunde aufgerufen werden, speicherst Du mit jedem Aufruf dort die Zeit. Um 20 Uhr (unabhängig von der Minuten-Zahl) etwa ist das der Wert 20.
Mit jedem Aufruf prüfst Du, ob die aktuelle Stunde größer als der zuletzt gespeicherte Wert ist. Nur dann wird der Cronjob ausgeführt und der Wert in der Textdatei oder Datenbank erneut überschrieben.
Fazit
Schon mit wenigen Maßnahmen beziehungsweise ein wenig Arbeit, kann ein Cronjob ausreichend vor Angreifern geschützt werden.
Dies ist auch wichtig, schließlich hat es schon seinen Grund, dass die den Server eventuell sehr belastenden Aufgaben nicht allzu oft ausgeführt werden.