Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zadania Crona - bezpieczeństwo plików
sliwa007
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 7
Dołączył: 18.08.2010
Skąd: Rzeszów

Ostrzeżenie: (10%)
X----


Witam,
Mam pewien skrypt który musi znajdować się w katalogu public_html a jest wywoływany przez crona. Moje pytanie brzmi: Jak zabezpieczyć plik przed uruchomieniem go z poziomu przeglądarki prze użytkowników. Próbowałem zablokować go htaccesem przez zabronienie dostępu wszystkim oprócz ip 127.0.0.1 potem próbowałem z localohst. Ale niestety po zablokowaniu pliku w taki sposób cron nie wykonuje pliku. Jak to rozwiązać ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
lobopol
post
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Właściwie to masz kilka metod:
  1. if ( !isset($_SERVER['argc']) || $_SERVER['argc']<1 ) {
  2. die();
  3. }


  1. if (PHP_SAPI != "cli") {
  2. die();
  3. }
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


wyrzuć nad public_html ?
Go to the top of the page
+Quote Post
sliwa007
post
Post #4





Grupa: Zarejestrowani
Postów: 69
Pomógł: 7
Dołączył: 18.08.2010
Skąd: Rzeszów

Ostrzeżenie: (10%)
X----


fifi2009 to nie ma znaczenia plik tak czy tak nie jest zabezpieczony,

lobopol PHP_SAPI nie działa, a to piwerwsze to o ile sie nie myle to ilosc argumenów w adresie, jeżeli ktoś wpisze adres plik?costam=costam warunek nie działa,
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


A jak chcesz uruchomić coś co jest ponad public_html ?
Go to the top of the page
+Quote Post
sliwa007
post
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 7
Dołączył: 18.08.2010
Skąd: Rzeszów

Ostrzeżenie: (10%)
X----


przez wyżej miałem na myśli "głębiej" - pierwsze zdanie mojego posta: "Mam pewien skrypt który musi znajdować się w katalogu public_html"

użyłem takiej metody:

  1. if (isset($_SERVER['HTTP_HOST'])) {
  2. die('Odrzucono');
  3. }


Działa. Ale czy jest bezpieczne ? Czy w tym przypadku będzie ktoś mógł wykonać skrypt za pomocą wget z innego servera ?
Go to the top of the page
+Quote Post
lobopol
post
Post #7





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


To oczym napisałeś to argv (które też inaczej działa), argc to liczba parametrów przekazana z konsoli http://php.net/manual/pl/reserved.variables.argc.php

Ten post edytował lobopol 18.04.2012, 20:56:16
Go to the top of the page
+Quote Post
thek
post
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Najlepiej sprawdzić jakie PHP_SAPI ustawiane jest da wywołań z command line systemu. Nie na każdym serwerze jest to "cli" o czym sam się kilka razy przekonałem. Najprościej? W pliku stwórz sobie dla testów logowanie tego i wywołaj raz cronem z cli, raz cronem jako wget oraz raz ze zwykłej przeglądarki i popatrz w logi jakie SAPI było przy każdym z nich.
Go to the top of the page
+Quote Post
sliwa007
post
Post #9





Grupa: Zarejestrowani
Postów: 69
Pomógł: 7
Dołączył: 18.08.2010
Skąd: Rzeszów

Ostrzeżenie: (10%)
X----


no właśnie chce tego uniknąć bo aplikacja którą tworzę to cms i bedzie zapewne instalowany na różnych hostingach, dlatego sprawdzanie SAPI mnie nie urządza, dlatego pytam czy sprawdzenie czy istnieje zmienna $_SERVER['HTTP_HOST'] jest bezpieczne, bo działa tak jak należy. Ustawiłem wget z innego serwa i odrzuca więc jest ok, czy są jeszcze jakieś przeciwwskazania ?
Go to the top of the page
+Quote Post
thek
post
Post #10





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Myślę, że najlepsze rozwiązanie już Ci podano. To sprawdzenie parametrów dostępnych jedynie z konsoli systemowej, a tak najczęściej uruchamia się zadania CRONa, jeśli mają być bezpieczne. Uruchamianie zadań z użyciem wget to zostawianie furtki dla potencjalnych włamywaczy i jeśli ktoś się połapie jaka jest ścieżka do pliku wykonywanego przez cron, to może CI ów plik odpalić nawet kilkaset razy na sekundę. Jednymi z parametrów dostępnych jedynie z konsoli są wspomniane argc i argv. Ale zobacz do tego komentarza i porównaj jakie są w nim parametry, a jakie zawiera sama definicja i zauważysz, że jest wiele różnic. Duża część z nich to właśnie takie, które są dostępne jedynie w konsoli. Ich wykrycie oznacza to, że skrypt poszedł w konsoli, a nie z przeglądarki czy czegoś, co próbuje ją naśladować.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 15:04