CRON na Home.pl
Home.pl jest jednym z nielicznych, popularnych, usługodawców, którzy udostępniają usługę CRON. No, prawie - jest to ich implementacja, która polega na okresowym wywoływaniu plików PHP, Perla, Pythona lub CGI - dzięki temu możemy zaimplementować np. automatycznie rozsyłający się newsletter etc.
W swojej dokumentacji Home.pl stwierdza:
Środowisko uruchomieniowe skryptów jest identyczne ze środowiskiem, w jakim uruchamiane są skrypty na serwerach wirtualnych. W praktyce wywołanie takie niewiele różni się od zwykłego wywołania GET po protokole HTTP.
Dla mojej małej główki równa się to z czymś takim:
telnet mojadomena.pl 80
GET /cron-hourly.php HTTP/1.1
Host: mojadomena.pl
Connection: Close
Co się jednak okazuje? Panowie z Home poszli na łatwiznę i nawet o tym nie wspomnieli - otóż CRON po prostu skanuje FTP w poszukiwaniu odpowiednich plików i wywołuje je przez interpreter CLI.
Efekt? Zmienna $_SERVER['HTTP_HOST'] ma złą wartość - zamiast mojadomena.pl znajdziemy tam home.pl - i tak, dowiedziałem się o tym "the hard way" kiedy nagle dostałem maila, który zamiast z adresu info@mojadomena.pl przyszedł z info@home.pl
Update - okazuje się, że problemem nie jest zła informacja w HTTP_HOST, ale jej .. brak. A w tym wypadku Home sam dodaje swoją domenę do adresu. Poniżej przykład wysyłanych informacji (wysłane print_r($_SERVER) na mój adres (zamieniłem login serwera na "LOGIN" w celu ochrony prywatności):
To: btm@anfo.pl
Subject: Cron na home
From: info@home.pl
Array
(
[QUERY_STRING] =>
[REQUEST_METHOD] => GET
[REMOTE_HOST] => localhost
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => /
[SERVER_SOFTWARE] => IdeaCron
[SERVER_PROTOCOL] => HTTP/1.0
[GATEWAY_INTERFACE] => CGI/1.1
[PATH] => /bin
[TMP] => /tmp
[TMPDIR] => /tmp
[SERVER_ID] => LOGIN@home
[SERVER_NAME] => LOGIN.home.pl
[SERVER_ADMIN] => LOGIN@home.pl
[SCRIPT_NAME] => /cron-5min.php
[SCRIPT_FILENAME] => /cron-5min.php
[REQUEST_URI] => /cron-5min.php
[PATH_INFO] => /cron-5min.php
[PATH_TRANSLATED] => /cron-5min.php
[PHP_SELF] => /cron-5min.php
[REQUEST_TIME] => 1253531102
[argv] => Array
(
)
[argc] => 0
)
Komentarze
Komentarz użytkownika jachacy
21 09 2009Nielicznych? Na wielu serwerach widziałem go dostępnego.
Komentarz użytkownika Bartosz "BTM" Szczeciński
21 09 2009To patrzeliśmy na inne serwery (hint: dla małych firm, takie do 100zł rocznie). Anyhows - nie o tym piszemy, sio ;p
Komentarz użytkownika mt3o
21 09 2009info@home.pl? To można do fiszingu wykorzystać! :>
Jak na taką poważną firmę, to nie do pomyślenia trochę jest. Nie jest to fuckup skali wykopu, ale też spory. Ciekawe ile osób się nadzieje ma mail z domeny @home.pl z informacją o konieczności zmiany hasła czy zbliżającym się terminie płatności...
Komentarz użytkownika Airborn
21 09 2009zgłosiłeś panom z home:>
Komentarz użytkownika Bartosz "BTM" Szczeciński
21 09 2009Zaraz po napisaniu notki ;-)
Komentarz użytkownika Airborn
21 09 2009ciekawe, czy się przyznają do błędu, czy może to taki ficzer ;)
Komentarz użytkownika Bartosz "BTM" Szczeciński
21 09 2009Błąd czy ficzer - może chociaż w dokumentacji doprecyzują.
Komentarz użytkownika Piotr Szyczak
21 09 2009Panie, będzie Blip efekt, Konieczny na swoim bliplogu zalinkował Cię http://blip.pl/s/16576726
Komentarz użytkownika rozie
21 09 2009Tak czy inaczej sformułowanie "nielicznych" w stosunku do udostępniania crona jest mylące i IMHO nie na miejscu. Z polskich hostingów, które kojarzę (nazwa.pl, ogicom.pl, home.pl) wszystkie dają crona (cykliczne wykonywanie zadań)...
Komentarz użytkownika mina86
21 09 2009Wysyłając list możesz podać dowolny nagłówek From, więc to czy Home coś by dodawał czy nie przed niczym nie uchroni. Sam opis usługi może być faktycznie mylący, bo z jednej strony "jest identyczny", a z drugiej "niewiele się różni" (a więc trochę się jednak różni), ale nie zakwalifikowałbym tego jako błąd samej implementacji, a raczej niedoprecyzowanie dokumentacji.
Komentarz użytkownika BTM
21 09 2009@mina86: w moim poście nie piętnuje tego, że mogę zespoofować nagłówek from (chociaż ISP i to mogą zabezpieczyć), ani to, że jest to błąd implementacji - właśnie o to, że jest to błąd dokumentacji jest tu moim głównym zarzutem.
Komentarz użytkownika Mario
22 09 2009Przydatny post :)
Komentarz użytkownika Wcinacz
24 09 2009Teraz trzeba oczekiwać masowych newsletterów