Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 3 Dołączył: 18.07.2005 Ostrzeżenie: (40%)
|
Jak takie adresy zrobić za pomocą $_GET (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Metoda $_POST już mi lepiej wychodzi. A gdy próbuję coś zrobić z $_GET to nic mi nie wychodzi :/ Pomożecie, i ew. napiszecie jakiś przykładzik.. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%)
|
jak masz plik.php?id=artykuly to odbierasz $zmienna=$_GET['id']; i wartosc $zmienna jest rowna artykuly i pozniej robisz z tym co chcesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) mozesz sprawdzac casem i includowac odpowiedni pilik itp.
|
|
|
|
Post
#3
|
|
|
Grupa: Przyjaciele php.pl Postów: 121 Pomógł: 1 Dołączył: 4.01.2004 Skąd: Jawor Ostrzeżenie: (0%)
|
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 3 Dołączył: 18.07.2005 Ostrzeżenie: (40%)
|
Znalazłem tylko to w manualu.
http://pl.php.net/manual/pl/reserved.varia...d.variables.get I tam żadnego przykładu nie ma do $_GET :/ |
|
|
|
| -margarina- |
Post
#5
|
|
Goście |
Dajmy taki przykład(tylko go nie stosuj, bo on jest rajem dla hackerów).
Założmy masz strone, masz artkykuly itp. Dajmy na to plik artykuly.php pobiera artykuly z folderu articles . Plik artykuly.php będzie więc tak wygladal: <?php $id=$_get['id'] readfile('articles/'.$id.'.html'); ?> I masz jeden artykul o nazwie gole w pliku articles/gole.html . Mozesz teraz do niego wejść po przez twojastrona/articles/gole.html albo twojastrona/artykuly.php?id=gole TO będzie tak po krótce |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
|
|
|
|
| -margarina- |
Post
#7
|
|
Goście |
Sorka pomyłka zamiast $_get powinno być $_GET . jakby jakieś pomyłki jeszcze były to poprawcie mnie bo to na szybciora pisałem
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 30.05.2008 Skąd: Białystok Ostrzeżenie: (0%)
|
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 19 Dołączył: 12.09.2005 Ostrzeżenie: (0%)
|
ten kod moze byc bezpieczny jak sie usunie wszystkie niepotrzebne znaki z pobranej wartosci:)
i bedzie good tylko wiadomo ma być:)
i przed include susuwasz wszystko np addslahs(czy jakoś tak) itp itd:) Ten post edytował matx132 2.07.2008, 10:36:29 |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
a najlepiej tylko przepuścić litery... jak to jest potrzebne to można też liczby, regular expressions (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Cytat i przed include susuwasz wszystko np addslahs(czy jakoś tak) itp itd:) Addslashes, ale to bardziej w dodawaniu do bazy danych. Najlepiej moim zdaniem zrobić tablicę istniejących plików i za pomocą wartości get wybierać odpowiedni indeks z tej tablicy. Zainkludowane zostaną tylko te pliki, które mogą być zainkludowane. Ten post edytował Shili 2.07.2008, 11:02:53 |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 27 Dołączył: 24.03.2002 Skąd: Tarnów Ostrzeżenie: (0%)
|
Addslashes, ale to bardziej w dodawaniu do bazy danych. Najlepiej moim zdaniem zrobić tablicę istniejących plików i za pomocą wartości get wybierać odpowiedni indeks z tej tablicy. Zainkludowane zostaną tylko te pliki, które mogą być zainkludowane. Tudzież basename() + file_exists() itp. BTW, wątek z 2005 roku ;] |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Addslashes, ale to bardziej w dodawaniu do bazy danych. Najlepiej moim zdaniem zrobić tablicę istniejących plików i za pomocą wartości get wybierać odpowiedni indeks z tej tablicy. Zainkludowane zostaną tylko te pliki, które mogą być zainkludowane. pfff.... a jesli to bylby blog, ktory tworzy każdą stronę wraz z nowym kontem? Chyba narazie dałem najlepsze rozwiązanie (dziwnie to zabrmiało (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) Cytat("antyqjon") Tudzież basename() + file_exists() itp. BTW, wątek z 2005 roku ;] Co to by miało niby dać? |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Cytat pfff.... a jesli to bylby blog, ktory tworzy każdą stronę wraz z nowym kontem? Chyba narazie dałem najlepsze rozwiązanie (dziwnie to zabrmiało (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) Objawię Ci tajemnicę ^^ Listę plików można tworzyć automatycznie, wpisywać je do tablicy równie automatycznie i dzięki temu mieć jednocześnie piękną obsługę błędów.W blogu nie chodzi o includowanie podstron, to całkiem inna bajka, gdzie wszystko przesyłane przez get jest wyciągane z bazy danych. No chyba, że istnieje gdzieś blog operujący na plikach, ale to dziwne by było. W przypadku prywatnych, to faktycznie dość możliwe, ale wtedy dochodzą, czy też powinny dojść mechanizmy sprawdzające poprawność tych danych i przeważnie też nie polega na przesyłaniu całej nazwy pliku, a w przypadku archiwum określonego okresu. Cytat Co to by miało niby dać? Choćby to, że sprawdza się, czy plik istnieje, a nie includuje wszystko jak leci (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) @edit Tfu, automatyka z informatyką zaczyna mi się mieszać ^^ Ten post edytował Shili 2.07.2008, 14:50:43 |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Cytat Choćby to, że sprawdza się, czy plik istnieje, a nie includuje wszystko jak leci (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) yhm... czyli wd. Ciebie te basename() i file_exists() zapewniają tu bezpieczeństwo? |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Tak, nie same, ale z innymi zabezpieczeniami jak najbardziej. Poza tym daje możliwość wyświetlenia ładnej informacji o błędzie i nie skutkuje z marszu fatal errorem.
|
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Cytat("Shilli") Tak, nie same, ale z innymi zabezpieczeniami jak najbardziej. hehehheh (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) No... jakimi ;p?? |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Nie podałeś na razie żadnego argumentu czemu Twoje rozwiązanie jest najlepsze. Skoro chcesz dyskutować rób to merytorycznie.
Jakimi zabezpieczeniami? Jeśli istnieje lista plików, które nie powinny być includowane tą metodą, to wypadałoby jeszcze zrobić tablicę wyjątków. Wyjaśnij mi teraz zamiast zadawać kolejne pytania w jakim sensie wyrażenie regularne miałoby być lepsze od ścisłego zbioru plików możliwych do includowania? @down Kurcze! To próbuję Ci przetłumaczyć - wyrażenie regularne takie jak zaproponowałeś przepuści WSZYSTKIE nazwy plików jedynie ze znakami a-zA-Z0-9; dzięki temu trzeba będzie nazywać pliki do niezaincludowania za pomocą innych znaków, co jest o tyle nieciekawe, że nazewnictwo powinno być jednolite. Poza tym jak wpiszę w get blgagagtaeg214142jjljljfsaja to też mi zaincluduje plik, czy też plunie warningiem, chociaż nikt o zdrowych zmysłach raczej nie tworzy takich plików dla użytkowników. Uważasz, że to jest plik przeznaczony do includowania? @down jeszcze raz Zabrakło mi słów. Nie możesz ustawić, bo to przejdzie Twoje proponowane wyrażenie regularne. Co najwyżej możesz sprawdzić za pomocą tego odrzuconego przez Ciebie file exist czy plik istnieje. Btw, congif również przejdzie. Ten post edytował Shili 2.07.2008, 15:44:32 |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Ponieważ robić tablicę wszystkich wyjątków to dużo roboty... poza tym nie powinno się includować jakichkolwiek innych plikow niz te ktore sa do tego przeznaczone... taka lista zajmowała by baaaardzo dużo a wyrażenie regularne ot bodajże jedna, niedługa linijka
Nie podałeś na razie żadnego argumentu czemu Twoje rozwiązanie jest najlepsze. Skoro chcesz dyskutować rób to merytorycznie. Jakimi zabezpieczeniami? Jeśli istnieje lista plików, które nie powinny być includowane tą metodą, to wypadałoby jeszcze zrobić tablicę wyjątków. Wyjaśnij mi teraz zamiast zadawać kolejne pytania w jakim sensie wyrażenie regularne miałoby być lepsze od ścisłego zbioru plików możliwych do includowania? @down Kurcze! To próbuję Ci przetłumaczyć - wyrażenie regularne takie jak zaproponowałeś przepuści WSZYSTKIE nazwy plików jedynie ze znakami a-zA-Z0-9; dzięki temu trzeba będzie nazywać pliki do niezaincludowania za pomocą innych znaków, co jest o tyle nieciekawe, że nazewnictwo powinno być jednolite. Poza tym jak wpiszę w get blgagagtaeg214142jjljljfsaja to też mi zaincluduje plik, czy też plunie warningiem, chociaż nikt o zdrowych zmysłach raczej nie tworzy takich plików dla użytkowników. Uważasz, że to jest plik przeznaczony do includowania? No to Ty nie próbuj mi tłumaczyć... sam spróbuj zrozumieć. blgagagtaeg214142jjljljfsaja, jak wpisze cos takiego w GET'cie, to poprostu mogę ustawić komunikat, który ładnie wygląda, >> 404 <<. Jak zrobić to twoim sposobem, czy to z basename, czy to z file_exists, to nadal moge sobie includowac, czy tez odczytywac pliki typu: - etc/passwd - conf.php - inne tajne pliki... |
|
|
|
Post
#20
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Jak zrobić to twoim sposobem, czy to z basename, czy to z file_exists, to nadal moge sobie includowac, czy tez odczytywac pliki typu: Bzdura. Za pomocą samej funkcji basename() jestem w stanie stwierdzić czy podajesz plik czy ścieżkę. Dokładając do tego file_exists() sprawię że pliki będą z lokalizacji, którą ja wybieram a nie atakujący.- etc/passwd - conf.php - inne tajne pliki... Napisz po prostu że nie wiesz a nie że sie nie da (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował mike 2.07.2008, 15:51:07 |
|
|
|
Post
#21
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
@down jeszcze raz Zabrakło mi słów. Nie możesz ustawić, bo to przejdzie Twoje proponowane wyrażenie regularne. Co najwyżej możesz sprawdzić za pomocą tego odrzuconego przez Ciebie file exist czy plik istnieje. Btw, congif również przejdzie. No widać że ci słów zabrakło... config.php przez odpowiednie filtrowanie wyrażeniem regularnym nie przejdzie, bo przykład wyżej mówi:
jak będa same litery i cyfry to sobie takiego config.php czy etc/passwd nie zaincudujesz, a jak sobie uzyjesz tego file_exists, czy tam basename, to dalej bede mogl sobie oidczytac te pliki... |
|
|
|
Post
#22
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Lol, wierz sobie w co chcesz, ale przykro mi to mówić, Twój system się zepsuje jeśli plik będzie musiał był przeparsowany przez parser php, a przeważnie takie się includuje.
Przypominam, że dalej są serwery bez obsługi htaccessa i tym bardziej zmiany ustawień apacha. Poza tym przypominam również, że przykład powyżej nie był Twój pierwotnie, Twoim pomysłem zaprezentowanym w tym temacie były wyrażenia regularne. Ten post edytował Shili 2.07.2008, 15:58:48 |
|
|
|
Post
#23
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
jak będa same litery i cyfry to sobie takiego config.php czy etc/passwd nie zaincudujesz, a jak sobie uzyjesz tego file_exists, czy tam basename, to dalej bede mogl sobie oidczytac te pliki... Bzdura, bzdura i jeszcze raz bzdura.Na przyszłość pisz, że nie wiesz a nie że się nie da. Patrz:
To teraz powiem nonszalancko i szarmancko: ~pyro przeproś Panią (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował mike 2.07.2008, 16:05:18 |
|
|
|
Post
#24
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Bzdura, bzdura i jeszcze raz bzdura. Na przyszłość pisz, że nie wiesz a nie że się nie da. Patrz:
To teraz powiem nonszalancko i szarmancko: ~pyro przeproś Panią (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Po pierwsze: include a nie "inlcude" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Po drugie: To ty i "Pani" mnie przeprosicie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) http://img365.imageshack.us/img365/6382/screenhacksh9.png |
|
|
|
Post
#25
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Po pierwsze: include a nie "inlcude" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Rozumiem, że nigdy nie zrobiłes literówki pisząc na forum? Przecież doskonale wiesz o co mi chodziło.Po drugie: To ty i "Pani" mnie przeprosicie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) A co Ty mi tu dajesz? Ja Ci tylku udowodniłem, że za pomocą tych dwóch fukkcji można rzeczy, o których mówileś, że nie można. Głośno krzyczałeś to Ci pokazuję, że można.http://img365.imageshack.us/img365/6382/screenhacksh9.png Można zabezpieczyć się przed podawaniem ścieżek, których się nie spodziewasz i można kontrolować, z którego folderu zasysane są pliki. Nie odwracaj teraz kota ogonem i ustosunkuj się do tego co napisałeś: Cytat Jak zrobić to twoim sposobem, czy to z basename, czy to z file_exists, to nadal moge sobie includowac, czy tez odczytywac pliki typu: - etc/passwd - conf.php - inne tajne pliki... Poza tym Twój przykład zakłada, że w plikach coś wyświetlasz. Rzadko tak jest w plikach konfiguracyjnych. Rzadko zresztą includuje się takie rzeczy. |
|
|
|
Post
#26
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Rozumiem, że nigdy nie zrobiłes literówki pisząc na forum? Przecież doskonale wiesz o co mi chodziło. A co Ty mi tu dajesz? Ja Ci tylku udowodniłem, że za pomocą tych dwóch fukkcji można rzeczy, o których mówileś, że nie można. Głośno krzyczałeś to Ci pokazuję, że można. Można zabezpieczyć się przed podawaniem ścieżek, których się nie spodziewasz i można kontrolować, z którego folderu zasysane są pliki. Nie odwracaj teraz kota ogonem i ustosunkuj się do tego co napisałeś: Poza tym Twój przykład zakłada, że w plikach coś wyświetlasz. Żadko tak jest w plikach konfiguracyjnych. Żadko zresztą includuje się takie rzeczy. Nie musisz się do mnie uprzedzać, tylko dlatego, że Cię poprawiam... tak samo pisze się rzadko, a nie "żadko" co napisałeś 2 razy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) (edit )(co poprawił batman) (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) Cały czas chodziło mi o bezpieczeństwo skryptu, twój nie jest, co pokazałem na screenie, poza tym odnosiłem się do przykładu z readfile(), co napisałem wyżej... A wcale nie tak rzadko jest taka sytuacja w plikach konfiguracyjnych, rzeczywiście rzadziej, ale jest, poza tym to nie muszą być pliki konfiguracyjne a mogą być też inne poufne dane... Ten post edytował pyro 2.07.2008, 19:25:35 |
|
|
|
Post
#27
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
To podaj przykład kodu includującego plik php (jakie includuje się najczęściej) przetrawionego wyrażeniem regularnym. Z chęcią się pośmieję tak samo szeroko jak Ty to robisz ^^
Poza tym pliki do includowania w przypadku podanym przez mike'a spokojnie można trzymać w jednym stworzonym do tego celu folderze, a wszystkie inne gdzie indziej. I za nic w świecie się do tego nie dokopiesz. Nadal uważam, że określanie Twojego sposobu jako najlepszego w tym temacie z takimi brakami wiedzy jest niedopuszczalne. Trzeba było zostać przy "najlepszy pomysł na jaki jestem w stanie wpaść", tak jak ja (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
|
Post
#28
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
To podaj przykład kodu includującego plik php (jakie includuje się najczęściej) przetrawionego wyrażeniem regularnym. Z chęcią się pośmieję tak samo szeroko jak Ty to robisz ^^ Poza tym pliki do includowania w przypadku podanym przez mike'a spokojnie można trzymać w jednym stworzonym do tego celu folderze, a wszystkie inne gdzie indziej. I za nic w świecie się do tego nie dokopiesz. Nadal uważam, że określanie Twojego sposobu jako najlepszego w tym temacie z takimi brakami wiedzy jest niedopuszczalne. Trzeba było zostać przy "najlepszy pomysł na jaki jestem w stanie wpaść", tak jak ja (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Shilli, zaznaczyłem, przy tym poście "że to dziwnie zabrzmiało", bardziej mi chodziło o to, że to był lepszy pomysł AŻ do tamtejszego momentu... chcesz przykład? proszę:
Cytat("Shilli") To podaj przykład kodu includującego plik php (jakie includuje się najczęściej) przetrawionego wyrażeniem regularnym. Z chęcią się pośmieję tak samo szeroko jak Ty to robisz ^^ Kod podałem. Chcesz się smiać szeroko? Bardzo proszę, przyjmę to z pokorą, proszę jednak też o podanie powodu, z którego się tak zacnie śmiejesz... |
|
|
|
Post
#29
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Podaję 2 (tak, wiem, że można warning zakryć małpą, ale jest to mało profesjonalne, zresztą tego nie przedstawiłeś, mimo że szczerze się spodziewałam (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )
http://img257.imageshack.us/img257/1493/plikrr9.th.jpg [img=http://img257.imageshack.us/img257/4403/errorup6.th.jpg] Innymi słowy nie dość, że Twój skrypt ma te same błędy, które wytknąłeś mike'owi, to jeszcze parę własnych - generuje warning, w takiej formie zamyka parsowanie php. To są dwie niedogodności, które w moich oczach go dyskredytują - jeśli można coś zrobić w sposób przyjemny dla użytkownika, nawet jeśli użytkownik jest totalną świnią i próbuje nam rozwalić serwis to należy tak robić. Oczywiście, zdaję sobie sprawę, że to przykład, być może napisałbyś to trochę inaczej, ale spodziewałam się kodu dopieszczonego pod względem możliwych komunikatów i tak dalej, przyznaję. Ten post edytował Shili 2.07.2008, 20:18:46 |
|
|
|
Post
#30
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Podaję 2 (tak, wiem, że można warning zakryć małpą, ale jest to mało profesjonalne, zresztą tego nie przedstawiłeś, mimo że szczerze się spodziewałam (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) http://img257.imageshack.us/img257/1493/plikrr9.th.jpg [img=http://img257.imageshack.us/img257/4403/errorup6.th.jpg] Innymi słowy nie dość, że Twój skrypt ma te same błędy, które wytknąłeś mike'owi, to jeszcze parę własnych - generuje warning, w takiej formie zamyka parsowanie php. To są dwie niedogodności, które w moich oczach go dyskredytują - jeśli można coś zrobić w sposób przyjemny dla użytkownika, nawet jeśli użytkownik jest totalną świnią i próbuje nam rozwalić serwis to należy tak robić. Cały czas mowa o bezpieczeństwie, a nie parsowaniu błędów... mogę se dać te małpe jak sie tak uprzec, co się zmieni w bezpioeczeństwie strony? Cytat("Shilli") Twój skrypt ma te same błędy, które wytknąłeś mike'owi Tu się mylisz... skrypt zaincluduje JEDYNIE pliki o rozszerzeniu .inc, czyli te, które SĄ DO TEGO PRZEZNACZONE! |
|
|
|
Post
#31
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
O kurcze...
Nie zauważyłeś, że przesyłacie inne dane?! Przecież u Mike'a trzeba tylko zamienić: i wychodzi na dokładnie to samo, tylko bez niedogodności powyżej. Tak, wyświetlanie warningów to jest błąd bezpieczeństwa. Spójrz sobie jeszcze raz - widać jaka jest ścieżka, jaki jest folder z wczytywanymi plikami a to wszystko osłabia bezpieczeństwo serwisu. |
|
|
|
Post
#32
|
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 18 Dołączył: 19.04.2008 Ostrzeżenie: (10%)
|
Akurat tutaj nalezy zastosowac rozne opcje o ktorych piszecie polaczone i im wiecej tym lepiej - zaleznie od tego jak szeroko dostepny pisze sie kod.
- NIE pchac zmiennych z tablic $_GET, $_POST itd. bez sprawdzenia - np regexp/basename itp (czyli usuwac wszelkie proby ../, http:, ) - NIE inkludowac na czysto z nazw pochodzacych ze zmiennej - NIE dawac nazwy pliku jako parametru (rany..), albo dawac lewa, kodowana, hashowana.. niby INNA nazwe, ktora potem sie dekoduje w walidatorze inkludowania, jesli taki sie napisalo. Nikt nie powiedzial, ze include to tylko include(), moze byc my_include() albo zwykle if (test_include()) include() . - dawac pass dla inkluda, jak go nie zna, odrzucic - zamykac pliki konfig na dziendobry przez DENY np. w htaccess, zmiane koncowek lub exit czy die() w 1 linii (jesli *.php) by przypoadkowo sie nie odpalil, ewent. if "inklud.php"==basename( $_SERVER[ 'SCRIPT_FILENAME' ] die() - mozna dodac wspomniana opcje z tablicowaniem nazw inkludow a zeby sie nie napisac zrobic np. "ink1"=>"ink.php", "ink2"=>"ink2.php" i pozniej w petli zainkludowac te co potrzebne zawsze a reszte przez my_include() albo zupelnie przez my_include(array()) czy tez smieszna tablica a'la switch $userFile = $_GET["name"]; switch ($userFile) case "": case "inklud1.php": include ("inklud1.php"); case "inklud2.php": include ("inklud2.php"); itd. |
|
|
|
Post
#33
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
O kurcze... Nie zauważyłeś, że przesyłacie inne dane?! Przecież u Mike'a trzeba tylko zamienić: i wychodzi na dokładnie to samo, tylko bez niedogodności powyżej. Tak, wyświetlanie warningów to jest błąd bezpieczeństwa. Spójrz sobie jeszcze raz - widać jaka jest ścieżka, jaki jest folder z wczytywanymi plikami a to wszystko osłabia bezpieczeństwo serwisu. A jeśli ci udowodnie, że pomimo tej linijki co dodałaś do skryptu mike'a skrypt nadal nie jest bezpieczny to dostane przeprosiny, wraz z textem "pyro miałeś rację, pszepraszam, że w Ciebie zwątpiłam, tak naprawde bardzo, ale to bardzo Cię lubię i proszę, nie sprzeczajmy się już i poznajmy się lepiej" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
|
Post
#34
|
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%)
|
Jeżeli struktura katalogów jest dobrze zaplanowana, czyli tak jak w pierwszym poście - pliki do includowania znajdują się w katalogu "artykuly" - to do zapewnienia bezpieczeństwa wystarczy basename" title="Zobacz w manualu PHP" target="_manual ( i dodatkowo file_exists" title="Zobacz w manualu PHP" target="_manual do obsługi błędów ).
Jeśli nie chcemy, żeby użytkownik mógł uzyskać dostęp do któregoś z plików: - umieszczamy go poza folderem dostępnym przez WWW (public_html, www, itp.) LUB - .htaccess z blokadą dostępu do plików i/lub katalogów LUB - define" title="Zobacz w manualu PHP" target="_manual w index.php i defined" title="Zobacz w manualu PHP" target="_manual w "tajnych plikach" Natomiast jeśli wszystkie pliki trzymamy w jednym katalogu, a naszym głównym zabezpieczeniem przy includowaniu jest dodanie rozszerzenia, to ( tu uprzedzę pyra ;] ) oprócz użycia basename" title="Zobacz w manualu PHP" target="_manual warto się jeszcze pozbyć znaków NULL ze zmiennej. Ogólnie to includowanie plików nie jest aż tak wielkim zagrożeniem. O ile nie pozwala na dołączanie plików typu: http://mojserwer.com/hackuj.txt (przed czym zabezpiecza nawet domyślne ustawienie allow_url_include w php.ini) to możemy sobie co najwyżej zagnieździć index.php No ewentualnie wyświetlić pustą stronę otwierając plik z deklaracjami funkcji, lub config.php o treści:
Większym problemem jest obsługa wszystkich niepożądanych zdarzeń przy uploadzie/downloadzie plików. Ten post edytował Kicok 3.07.2008, 10:00:54 |
|
|
|
Post
#35
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Cytat A jeśli ci udowodnie, że pomimo tej linijki co dodałaś do skryptu mike'a skrypt nadal nie jest bezpieczny to dostane przeprosiny, wraz z textem "pyro miałeś rację, pszepraszam, że w Ciebie zwątpiłam Nie, bo Twój skrypt również nie jest bezpieczny, a jak na razie ma nawet więcej niedogodności niż ten napisany przez Mike'a, a tym bardziej w moim przekonaniu nie jest lepszy niż tablica możliwych plików do include'owania lub file_exists z basename. Udowodnisz, że jest gorszy, to rozważę takie zachowanie.Żaden skrypt czy portal, czy strona nie będzie w 100% bezpieczna. Bo pisze je zawodny człowiek i stoją na maszynie oprogramowanej przez innych zawodnych ludzi. I taka jest prawda (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ale dalej nie uważam, żeby niektóre rozwiązania zaproponowane w tym temacie były gorsze od Twojego. Btw, na sam koniec - plik inc, w takiej formie w jakiej podałeś jest możliwy do odczytania bez includowania go w innym. Oczywiście przy domyślnych i niezbyt wymyślnych ustawieniach apacha, innymi słowy takich, jakie panują na większości serwerów. Co do lubienia się i nie sprzeczania, tak na sam smakowity koniec, uznaję od dawna, że takie "małe kłótnie" dodają smaczku. Może nie tak dużego, jak na zwykłym forum dyskusyjnym, ale moim zdaniem od czasu do czasu mogą być miłym rozruszaniem atmosfery. Ten post edytował Shili 3.07.2008, 10:22:21 |
|
|
|
Post
#36
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Nie, bo Twój skrypt również nie jest bezpieczny, a jak na razie ma nawet więcej niedogodności niż ten napisany przez Mike'a, a tym bardziej w moim przekonaniu nie jest lepszy niż tablica możliwych plików do include'owania lub file_exists z basename. Udowodnisz, że jest gorszy, to rozważę takie zachowanie. Żaden skrypt czy portal, czy strona nie będzie w 100% bezpieczna. Bo pisze je zawodny człowiek i stoją na maszynie oprogramowanej przez innych zawodnych ludzi. I taka jest prawda (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ale dalej nie uważam, żeby niektóre rozwiązania zaproponowane w tym temacie były gorsze od Twojego. Btw, na sam koniec - plik inc, w takiej formie w jakiej podałeś jest możliwy do odczytania bez includowania go w innym. Oczywiście przy domyślnych i niezbyt wymyślnych ustawieniach apacha, innymi słowy takich, jakie panują na większości serwerów. Co do lubienia się i nie sprzeczania, tak na sam smakowity koniec, uznaję od dawna, że takie "małe kłótnie" dodają smaczku. Może nie tak dużego, jak na zwykłym forum dyskusyjnym, ale moim zdaniem od czasu do czasu mogą być miłym rozruszaniem atmosfery. A JEŻELI CI UDOWODNIE, ŻE MOJ SKRYPT JEST BEZPIECZNY, A MIKE'A Z TWOJĄ DODATKOWĄ LINIJKĄ NIE JEST, to wtedy dostane wyżej wspomniane przeprosiny (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ? // ADD zatkało kakao (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Wygląda na to, że Shilli mi przyznała rację, czekam na przeprosiny (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) A dlaczego tak sie dzieje już wyjaśniłem... |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 10:37 |