Bezpieczeństwo skryptów PHP, Jak zabezpieczyć się przed włamaniem |
Bezpieczeństwo skryptów PHP, Jak zabezpieczyć się przed włamaniem |
8.07.2005, 14:41:45
Post
#21
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) |
A wystarczy dodac
$tablica = array(); przed jej uzyciem i po klopocie. A poza tym to bylo tylko Cytat to zrób sobie tablicę w skrypcie, coś w stylu , pisane szybko i bez doglebnego zastanowienia
-------------------- Nie lubię jednorożców.
|
|
|
24.07.2005, 13:10:05
Post
#22
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 15 Dołączył: 29.04.2005 Skąd: Gdynia Ostrzeżenie: (0%) |
Jeżeli już trzeba zrobić coś takiego:
to zawsze lepiej:
Jest jeszcze coś takiego (działą tylko z rg=on). Mamy kod:
i plik ksiega.php:
jest tu bardzo wiele luk, m. in:
1. Użycie strlen" title="Zobacz w manualu PHP" target="_manual:
2. Użycie strip_tags" title="Zobacz w manualu PHP" target="_manual:
3. Zamiast $tekst/$nick używamy $_GET['tekst']/$_GET['nick']:
4. Użycie flock" title="Zobacz w manualu PHP" target="_manual:
5. To to samo co w punkcie 2 .
Powód edycji: Porządki // Piniek
-------------------- (\.../) This is Bunny. Copy and paste bunny into
(O.o) your signature to help him gain world domination. (> <) Zanim zapytasz | Też się przyda | Pomogłem ci? Kliknij "Pomógł" |
|
|
16.09.2005, 11:21:56
Post
#23
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 10.02.2003 Skąd: Magor Ostrzeżenie: (0%) |
A jest jakaś możliwość, żeby wybrane pliki dało się otwierać tylko poprzez include(), a nie bezpośrednio z przeglądarki?
-------------------- "What are we going to do tonight, Brain?"
"Same thing we do every night, Pinky... Try to take over the world!" |
|
|
16.09.2005, 11:40:41
Post
#24
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) |
Cytat(Vaticinator @ 2005-09-16 11:21:56) A jest jakaś możliwość, żeby wybrane pliki dało się otwierać tylko poprzez include(), a nie bezpośrednio z przeglądarki? jest, na szybko przychodzą mi do glowy 2 sposoby : 1. umiescic pliki w jakims katalogu i zabezpieczyc plikiem .htaccess z odpowiednim wpisem (deny from all) 2. umiescic pliki powyzej public_html -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
28.09.2005, 15:18:54
Post
#25
|
|
Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) |
Cytat(Vaticinator @ 2005-09-16 11:21:56) A jest jakaś możliwość, żeby wybrane pliki dało się otwierać tylko poprzez include(), a nie bezpośrednio z przeglądarki? Plik includeujący:
Plik lol.php:
-------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
21.11.2005, 00:18:04
Post
#26
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
W związku z ostatnim postem tutaj, który poruszał problem już omówiony postanowiłem trochę oczyścić ten wątek. Kilka postów zostało usuniętych - zostały te które powinny zostać Od tej chwili, proszę użytkowników zwłaszcza początkujących o czytanie tego wątku od początku a nie tylko dopisywanie się na końcu bez czytania całości tego wątku. Czasem (a raczej często) rozwiązanie problemu jaki macie już padło. Warto poświęcić czas na odszukanie rozwiązania. P.S. To nie jest kącik lamerskich pytań! |
|
|
1.03.2006, 10:50:25
Post
#27
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 6.02.2005 Ostrzeżenie: (0%) |
Ja stosuję w sumie proste rozwiązanie, dodaje tylko strony do których użytkownik może wejść i tyle, jeżeli chce wejść na inną to jest przekierowany na str. główną
-------------------- |
|
|
1.03.2006, 10:56:44
Post
#28
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
No ale poco trzeba pisac nazwe skryptu? Skoro i tak juz to oifowales, to daj identyfikator a nie nazwe. Po co ktoś ma wiedziec jakie masz skrypty?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
1.03.2006, 10:57:57
Post
#29
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
~huntercs możesz to zrobić bardziej elastycznie i elegancko:
Masz teraz możliwość prostego i łatwego dodawanie stron i nie musisz ich adresów uzależniać od wartości $_GET[ 'Section' ]. Bo możesz dawać inne nazwy plików. |
|
|
1.03.2006, 18:17:47
Post
#30
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 28.02.2006 Skąd: 127.0.0.1 :) => Ukraine Ostrzeżenie: (0%) |
I like php-coding in this way
Just one line, not 21! -------------------- My blog: vedeney.org.ua
|
|
|
6.03.2006, 13:57:15
Post
#31
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 2 Dołączył: 29.01.2004 Skąd: Rz-ów Ostrzeżenie: (0%) |
|
|
|
6.03.2006, 16:07:32
Post
#32
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) |
Switch może być dobry w przypadku, gdy jest mało stron i ich ilość nie jest mobilna. Zauważ, że dla każdego pliku musisz doklepywać osobnego case'a, a można to przecież zrobić bardziej dynamicznie .
-------------------- Sygnatura niezgodna z regulaminem.
|
|
|
7.03.2006, 19:30:46
Post
#33
|
|
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:
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::..
|
|
|
11.04.2006, 21:50:27
Post
#34
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) |
Cytat(Diwi @ 2005-05-05 12:21:40) 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:
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:
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 Rozwiązanie 1. Tworzymy taki include:
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. Ludzie litości! Wielkie zabezpieczenia, a ja widzę, że tu ktoś podstaw php nie zna! Od kiedy to w include idzie podać ścieżkę do innego serwera? Jeżeli podamy:
to skrypt nie zostanie zincludowany! Taka opcja jest możliwa jest jedynie w funkcji readfile (do tego właśnie ona jest). Zastosowanie:
jest dosyć bezpieczne (zależy od skryptu). Najbardziej bezpieczne jest już:
Ludzie - jak ja widzę takie bzdury, że wtedy za pomocą index.php?zmienna=http:///cośtam można zhackować stronę to mnie krew zalewa. Tak samo w przypadku tematu o SQL Injection - pierdół pełno powypisywane. Skoro już piszecie w ciemno, to najpierw polecam czy takie coś zadziała, a potem pisać jak przeciwdziałać. W dodatku przy powyższym skrypcie jeżeli dodamy: $zmienna = $_GET['zmienna']; to nie stanie się nic innego jak to, że zmienna przybierze wartość z adresu 2 razy (a co za tym idzie skrypt będzie wykonywany wolniej). Pokażcie mi w tym jakąś lukę to zwracam honor... Reszty postów i tematu całego wolę dalej nie czytać |
|
|
11.04.2006, 21:58:04
Post
#35
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
Cytat Ludzie litości! Wielkie zabezpieczenia, a ja widzę, że tu ktoś podstaw php nie zna! Od kiedy to w include idzie podać ścieżkę do innego serwera? hmmm, manual klamie?http://pl.php.net/manual/pl/function.include.php Cytat Jeśli "URL fopen wrappers" są włączone w php (takie jest domyślne ustawienie) można podać nazwę pliku do wczytania używając adresu URL (przez protokół HTTP lub innym obsługiwanym sposobem - zajrzyj do Dodatek M aby zapoznać się z listą obsługiwanych protokołów), zamiast podawać ścieżkę lokalną. Nie sprawdzalem tego nigdy, ale wierze manualowi edit: sprawdzilem. manual nie klamie. da sie Na przyszlosc jak kogos oskarżasz o brak podstaw, sprawdź, czy sam je posiadasz q.php
a link do skryptu: http://rpn/test/q.php?file=http://forum.webcity.pl/index.php no i tym sposobem odpalilem se konkurencyjne forum, a teoretycznie chcialem moją stronę Cytat Reszty postów i tematu całego wolę dalej nie czytać ja rowniez ci tego nie polecam dla Twego dobra, jeszcze cię coś naprawdę zaleje .
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
12.04.2006, 08:32:56
Post
#36
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) |
A ja z kolei dodam, że3 należałoby się przyjrzeć składni include i pochodnych. Zwłaszcza polecam lekturę: jak zachowuje sieinclude pobierając pliki z innych serwerów.
Kolega LamaMASTER myli się, da się zaincludować skrypt php z innego serwera, z drobnym ale... Uważacie, że apache na tym serwerze puści na źródło skryptu, bo my go o to poprosimy?... Nie? A jak zachowa się apache?... I obyśmy tylko takich hakerów mieli, którzy skrypt niszczący odpalają z własnego serwera :-D -------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
12.04.2006, 11:32:16
Post
#37
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) |
Na moim serwerze taki trick nie działa, dlatego byłem przekonany, że nie idzie (tak samo było u moich kolegów).
|
|
|
12.04.2006, 11:34:48
Post
#38
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
I tylko dlatego, ze u ciebie ten trick nie dziala, to jedziesz po innych uzytkownikach? oskarżasz ich o brak wiedzy, o brak testow tego co robią, o nieczytanie manuala? Zastanow sie co robisz.
Slyszales kiedys o czymś takim, ze kazdy serwer mozna inaczej skonfigurowac? ps: wspominales cos o zwróceniu honoru... jakos tego nie zauwazylem bys to zrobil -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
12.04.2006, 17:46:53
Post
#39
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) |
Cytat ps: wspominales cos o zwróceniu honoru... jakos tego nie zauwazylem bys to zrobil \/ Cytat Pokażcie mi w tym jakąś lukę to zwracam honor Cytat Gdzie masz jakieś pierdoły na ten temat? Podaj przykłady, a nie świeć swoimi mądrościami. Przykład: Skoro mamy np. mysql_query, to nie jest możliwe zrobienie czegoś takiego: news.php?id=1;DROP%20TABLE%20news; , bo mysql_query pozwala na wysłanie tylko jednego zapytania. Poświeciłem poświeciłem i się wyświeciło Przepraszam za zamieszanie |
|
|
12.04.2006, 17:52:35
Post
#40
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) |
Ale przy postgresql, mssql czy oracle to już zadziała... pamiętaj, świat nie ogranicza się do mySQL
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 26.09.2024 - 15:14 |