Zabezpieczenie CRON`a #tip

Posted by

Niedawno pokazałem jak dodawać Cron`a za pomocą konsolki oraz co oznaczają konkretne wartości. Teraz kolej na zabezpieczenie Cron`a, a konkretnie skryptu który jest wywoływany przy uruchomieniu zadania Cron.

W przypadku pliku, który zostaje uruchomiony nie ma większego problemu, gdyż możemy umieścić go w folderze innym niż publicznym (public_html) i automatycznie dostęp do niego jest możliwy tylko z poziomu serwera.
Problem pojawia się, gdy jest on częścią aplikacji albo adresem API, pod który odwołuje się serwer i musi być w folderach zagnieżdzonych, aby mieć dostęp do pewnych instancji, albo klas. Można zostawić ten problem, bo na ogół ciężko poznać ścieżkę albo adres API, pod który odwołuje się Cron, lecz można też w tym folderze dodać .htaccess z dostępem tylko z naszego serwera i automatycznie dostęp do skryptów zostaje zablokowany dla klienta.

<Files "cron.php">
  Order deny,allow
  Allow from name.of.this.machine
  Allow from another.authorized.name.net
  Allow from 127.0.0.1
  Deny from all
</Files>

Dodatkowe zabezpieczenia

W przypadku skryptów, które mają się wykonywać raz na określony czas, np. co dwa tygodnie, dla generowania danych statystycznych (albo dla jakichkolwiek innych operacji), niedobre byłoby gdyby Cron się nie wykonał, albo z niewiadomych przyczyn wywołałby się kilka razy. Wtedy bez innego zabezpieczenia spowodujemy niepotrzebne problemy. Dlatego warto oprócz zabezpieczenia w postaci .htaccess, trzymać w pliku/bazie danych datę ostatniego wywołania Crona, a najlepiej jego historie, wtedy w skrypcie wywoływanym możemy sprawdzić, czy data aktualnej operacji zgadza się z momentem, kiedy skrypt ma się wykonać, lub czy nie jest zbyt odległa, wtedy można np. wykonać skrypt kilka razy, aby uzupełnić potrzebne dane.

Linki i źródła:

https://stackoverflow.com/questions/7635842/securing-cron-file

print

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *