Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] bezpieczenstwo komunikacji z baza
Forum PHP.pl > Forum > Przedszkole
szymonstawi
witam wszystkich!
mam strone gdzie mozna dodawac artykuly (index.php) i strone moderacji (edycja, usuwanie - admin.php). do komunikacji z baza mam plik baza.php i tam sa funkcje add, edit, delete. wejscie do admina jest oczywiscie zabezpieczone prawami dostepu zrobionymi na sesjach i teraz mam pytanie. czy takie zabezpieczenie wystarczy? plik baza.php tez powinienem zabezpieczyc sesja? tylko czy sesja wystarczy?
desperat666
mowisz ze baza.php zawiera funkcje, wiec co da wykonanie pliku baza.php? nic.
szymonstawi
ok, dzieki, a samo zabezpieczenie na podstawie sesji wystarczy w pliku admin.php? tam sa linki do usuwania, wiec poza tym adminem i tym kto potrafi ukrasc sesje trzeba sie jeszcze jakos zabezpieczyc?
wNogachSpisz
Sesje bazujące na mechanizmach php mająj uroczą skłonność do trzymania plików z numerami sesji w katalogu tymczasowym dostępnym do odczytu/zapisu dla każdego użytkownika hostingu współdzielonego.

Bezpieczne to to nie jest...
szymonstawi
wiec jak najlepiej zrobic sesje?

a poza tym to ify w plikach gdzie sa linki do usuwania itp wystarcza?

moze ktos cos o tych sesjach napisac? skoro nie uzywac domyslnych to jakie mam uzywac?
Fifi209
session handler
szymonstawi
dzieki, ale strasznie malo materialow o tym. poza tymi z php.pl to nic konkretnego nie znalazlem, nawet za granica. czemu, skoro te zwykle sesje zle dzialaja?
wNogachSpisz
Sesje działają źle (czyt. niebezpiecznie), ponieważ niedbała konfiguracja współdzielonych serwerów hostingoweych powoduje, że każdy kto posiada konto na takim serwerze może przejąć Twoją sesję.

Polecam implementację mechanizmu sesji bez korzystania z funkcji session_*
Ta w CodeIgniterze jest całkiem spoko, domyślnie szyfruje dane sesji i trzyma w COOKIE, działa to dobrze póki nie wrzucisz do sesji zbyt wiele danych, czego skutkiem będzie utrata sesji.
Na szczęście jest wersja pracująca z bazą danych, poszukaj na CI-wiki.
Fifi209
Cytat(wNogachSpisz @ 7.04.2011, 00:15:08 ) *
Polecam implementację mechanizmu sesji bez korzystania z funkcji session_*

Przecież można ustawić swojego handlera session_set_save_handler
wNogachSpisz
Fajne, tylko jak tego użyć gdy pracujesz wyłącznie wewnątrz obiektów w modelu MVC i nie chcesz "śmiecić" pluginami, hookami i innymi helperami?

Jest tego obiektowy wariant, jak np. stream_wrapper_register() ?
szymonstawi
http://php.pl/Wortal/Artykuly/PHP/Architek...I/Implementacje

a tutaj jest uzywane session_ jakby ktos mial jakis prosty i dobry przyklad to poprosze:)
bugmenot
A nie można tego zrobić przez .htaccess i .htpasswd?
szymonstawi
czyli jak?
nekomata
Cytat(fifi209 @ 6.04.2011, 23:33:13 ) *
Przecież można ustawić swojego handlera session_set_save_handler

Cytat(wNogachSpisz @ 6.04.2011, 23:35:49 ) *
Fajne, tylko jak tego użyć gdy pracujesz wyłącznie wewnątrz obiektów w modelu MVC i nie chcesz "śmiecić" pluginami, hookami i innymi helperami?
Jest tego obiektowy wariant, jak np. stream_wrapper_register() ?

Tak się zastanawiam , własny handler (cool!) dla sessji byłby fajną sprawą , ale nie wystarczy np.
  1. session_save_path(__DIR__.'\sessions');
Sesje są zapisywane wtedy w katalogu sessions , wywołanego pliku (ja wszystkie swoje sesje załączam zapomocą jednego include więc to nieproblem) , no i mam na myśli to że jak już nam ktoś po plikach(z naszego katalogu public_) może szperać to czy mamy sesje normalnie czy np. za pomocą własnego handlera w mysqli albo jeszcze inaczej i tak jest to nieważne bo wszystkie pliki są dostępne.Więc czy naprawdę warto bawić się we własnego handlera?
wNogachSpisz
Cytat(nekomata @ 7.04.2011, 20:27:40 ) *
Sesje są zapisywane wtedy w katalogu sessions


Jest to niewątpliwie rozwiązanie problemu bezpieczeństwa..
Problem w tym, że dla mnie jest to struganiem protezy.
Najlepiej pozbyć się problemu sesji obsługiwanych przez PHP przez własną implementację
Nie znam ani jednego racjonalnego argumentu przeciwko, jeśli ktoś jest w stanie taki wysunąć, to chętnie przeczytam.
Własna implementacja sesji daje odporność na sytuacje nieprzewidzane,
jak np. blokada funkcji session_save_path() czy session_set_save_handler()...
nekomata
Ja mam namyśli , że właśnie z folderem sessions , jeśli ktoś nam przegląda to (nawet innym plikiem php na swoim koncie itd.) może utworzyć sobie duplikat plików serwisu , przejrzeć jak działa twój własny handler , i uzyskać dostęp .Jeśli session_save_path() niedziałający to ja bym po prostu brał zwrot pieniędzy i zmieniał serwer.
wNogachSpisz
Cytat(nekomata @ 7.04.2011, 20:45:08 ) *
Ja mam namyśli , że właśnie z folderem sessions , jeśli ktoś nam przegląda to (nawet innym plikiem php na swoim koncie itd.) może utworzyć sobie duplikat plików serwisu , przejrzeć jak działa twój własny handler , i uzyskać dostęp .Jeśli session_save_path() niedziałający to ja bym po prostu brał zwrot pieniędzy i zmieniał serwer.

Kopczyk problemów których można uniknąć stosująć własną implementację sesji.
Kolejny argument 'Za'.
nekomata
Tylko ... jeśli jakaś funkcja która jest zaimplementowana może nie działać równie dobrze możemy spekulować co zrobić gdy nie-zadziała echo (tak wiem echo nie jest funkcją , przykład).
Fifi209
wNogachSpisz skoro tak bardzo polecasz pisanie własnego systemu sesji, swojej implementacji, dajesz tak dużo argumentów "za" to z pewnością chciałbyś się podzielić swoimi doświadczeniami, bo zapewne pisałeś nie jeden mechanizm sesji lub masz już swój jeden idealnie dopracowany. Z przyjemnością oglądniemy Twoją implementację systemu sesji, w końcu tak sobie zachwalasz.

Jeżeli masz tyle argumentów "za" to poprzyj swoimi kodami! Ba! Więcej, daj do ocen i zobaczymy jakie komentarze i oceny dostaniesz.
potreb
Jestem za, a zresztą po co własny mechanizm sesji bo nigdy nie stosowałem. Czy naprawdę defaultowe sesje są tak kiepskie, że trzeba pisać własny session handler?
wNogachSpisz
Cytat(nekomata @ 7.04.2011, 21:39:37 ) *
nie-zadziała echo

Echo zadziała.
Nie ma to wiele wspólnego z sesjami.

Cytat(fifi209 @ 7.04.2011, 21:52:26 ) *
z pewnością chciałbyś się podzielić swoimi doświadczeniami, bo zapewne pisałeś nie jeden mechanizm sesji lub masz już swój jeden idealnie dopracowany.

Już to napisałem.
Wysil się i przeczytaj cały wątek.
nekomata
Zdania powinno czytać się w całej ich okazałości a nie patrzeć na pojedyńcze wyrażenia , napisałem "równie dobrze możemy spekulować co zrobić gdy nie-zadziała echo (tak wiem echo nie jest funkcją , przykład)." (dokładniej rzecz biorąc to jest pół zdania biggrin.gif ). A i jestem pewien że fifi miał na myśli byś pokazał dowód rzeczowy , przykład który obecnie używasz albo chociaż obrazowo przedstawił swojego handlera.

Nie obraź się ale po próżnicy to każdy umie brzmieć rzeczowo.
wNogachSpisz
Cytat(nekomata @ 7.04.2011, 22:45:22 ) *
A i jestem pewien że fifi miał na myśli byś pokazał dowód rzeczowy , przykład który obecnie używasz albo chociaż obrazowo przedstawił swojego handlera.

Jeszcze raz powtórze, już to napisałem, w tej sytuacji "przeczytaj cały topic" idzie również do Ciebie.

Wnioski:
session_save_path() warto ustawić jeśli chcesz poprawić bezpieczeństwo skryptu, np. gotowego CMS'a który pracuje już z funkcjami z rodziny session_*

W innej sytuacji, własny mechanizm sesji działający w kompletnym oderwaniu od funkcji session_* jest lepszym rozwiązaniem.
Ja już się przez te wszystkie lata nauczyłem, że jeśli chcesz zeby coś sprawnie działało, musisz jak najmniej polegać na innych.
Mechanizm sesji PHP jest właśnie takim "kimś innym", kogo można łatwo i sprawie zastąpić.
Mechanizm sesji PHP sprawiał, sprawia i będzie sprawiał problemy tak długo, aż się go nie pozbędziesz.
nekomata
Jeśli mógłbyś podać kilka przykładów "niepoprawnie" (sprawiającego problemy) mechanizmu sesji , chętnie bym to chciał zobaczyć. Ja sam nie miałem dotąd nigdy problemu z działaniem sesji.
wNogachSpisz
Cytat(nekomata @ 7.04.2011, 23:08:32 ) *
Jeśli mógłbyś podać kilka przykładów "niepoprawnie" (sprawiającego problemy) mechanizmu sesji , chętnie bym to chciał zobaczyć. Ja sam nie miałem dotąd nigdy problemu z działaniem sesji.

Tiaa.. póki nie zobaczysz "hacked" wpisując adres swojej strony..
nekomata
Dobra skończmy to gadanie po próżnicy , nie wykazujesz żadnych dowodów i żadnych przykładów.Równie dobrze można mówić że MySQL jest niebezpieczne ponieważ jest MySQL injection , dlatego napiszmy własną baze danych , co nam szkodzi że nam MySQL siedzi sztab wyszkolonych ludzi , to są lamusy i się nie znają na rzeczy.Tak dokładnie brzmisz.
Fifi209
Cytat(wNogachSpisz @ 7.04.2011, 23:04:58 ) *
Ja już się przez te wszystkie lata nauczyłem, że jeśli chcesz zeby coś sprawnie działało, musisz jak najmniej polegać na innych.

Pisz wszystko sam od zera, zobaczymy... Napisz sobie biblioteki w C, skompiluj sam PHP, aby mieć pewność że jest wszystko po Twojej myśli. Napisz swojego framework'a, twórz koło na nowo. Marnuj mnóstwo czasu na pisanie własnych rozwiązań.
Cytat(wNogachSpisz @ 7.04.2011, 23:04:58 ) *
Mechanizm sesji PHP sprawiał, sprawia i będzie sprawiał problemy tak długo, aż się go nie pozbędziesz.

O ile hosting jest dzielony, w przypadku np. dedykowanego serwera nie widzę powodu zastępowania go. Jeżeli tak, to podaj powód dlaczego miałbym to robić?
wNogachSpisz
Cytat(nekomata @ 7.04.2011, 23:23:22 ) *
nie wykazujesz żadnych dowodów i żadnych przykładów.

Jakich chcesz dowodów?
Że sesje php są mniej bezpieczne?
Że sesje php działają wolniej?
Że sesje php zajmują więcej miejsca na hdd?
Że sesje php dają mniejszą możliwość kontroli?

Cytat(nekomata @ 7.04.2011, 23:23:22 ) *
można mówić że MySQL jest niebezpieczne ponieważ jest MySQL injection

MySQL nie jest samo w sobie niebezpieczne.
Niebezpieczne jest nieumiejętne z niego korzystanie.
Niedawne włamanie na mysql.com (metodą blind-sql-injection) zdaje się to potwierdzać smile.gif

Cytat(nekomata @ 7.04.2011, 23:23:22 ) *
dlatego napiszmy własną baze danych , co nam szkodzi że nam MySQL siedzi sztab wyszkolonych ludzi , to są lamusy i się nie znają na rzeczy.Tak dokładnie brzmisz.

Można ostrożnie założyć, że w mysql siedzą nie głupi ludzie.
Optymalizator mysql radzi sobie w niektórych sytuacjach lepiej niż optymalizatory baz danych projektór komercyjnych, co jest zjawiskowe.
Nie widzę biznesowych perspektyw dla nowego projektu w tej dziedzine.
Jest mysql, mssql, postgresql, oracle, a dla twardzieli sqlite i to w moim odczuciu wystarczy.

Cytat(fifi209 @ 7.04.2011, 23:24:54 ) *
Pisz wszystko sam od zera, zobaczymy... Napisz sobie biblioteki w C, skompiluj sam PHP, aby mieć pewność że jest wszystko po Twojej myśli. Napisz swojego framework'a, twórz koło na nowo.

To by było cudowane!
Niestety moja wiedza o C jest na poziomie zerowym.
Nie mam też wolnych 5000 lat na zmarnowanie.
Ba, nie mam też czasu na pisanie własnego mechanizmu sesji, dlatego korzystam z gotowych, o czym pisałem pare postów wcześniej - i znowu kłania się ignorancja przejawiająca się braniem udziału w dyskusji bez wcześniejszego przeczytania topicu w całości... Żałosne.

Cytat(fifi209 @ 7.04.2011, 23:24:54 ) *
O ile hosting jest dzielony, w przypadku np. dedykowanego serwera nie widzę powodu zastępowania go.

Nie znasz dnia ani godziny kiedy przyjdzie Ci przenieść się z dedyka na shared..

Cytat(fifi209 @ 7.04.2011, 23:24:54 ) *
Jeżeli tak, to podaj powód dlaczego miałbym to robić?

- Bezpieczństwo
- Szybość
- Miejsce na HDD
- Kontrola / Elastyczność
- i wiele innych
Fifi209
Cytat(wNogachSpisz @ 7.04.2011, 23:47:12 ) *
Nie znasz dnia ani godziny kiedy przyjdzie Ci przenieść się z dedyka na shared..

Wtedy zmienię choćby ścieżkę...
Cytat(wNogachSpisz @ 7.04.2011, 23:47:12 ) *
- Bezpieczństwo
- Szybość
- Miejsce na HDD
- Kontrola / Elastyczność
- i wiele innych

Z nerwów gubisz literki, nie tylko tutaj.

1. Myślę, że nie trzeba tego poruszać, dotyczy hostingów dzielonych.
2. Dajesz tezę, daj argument potwierdzający ją.
3. Rozśmieszyłeś mnie do łez, nawet w domu mam 1.5TB w jednym komputerze a mam ich parę.
4. Kontrola - jestem ciekaw co masz na myśli. Elastyczność - wydaje mi się, że to co wbudowane znajdzie szersze zastosowanie niż autorskie rozwiązania.
5. np. jakich?
nekomata
Cytat(wNogachSpisz @ 7.04.2011, 22:47:12 ) *
Jakich chcesz dowodów?
Że sesje php są mniej bezpieczne?
Że sesje php działają wolniej?
Że sesje php zajmują więcej miejsca na hdd?
Że sesje php dają mniejszą możliwość kontroli?
Tak właśnie takie dowody chce , gdzie one są?Suchy link starczy.

Cytat
- Bezpieczństwo --> Tego nieudowodniłeś
- Szybość --> Tego też
- Miejsce na HDD --> Ciekawe jak? Dane nadal takie same przechowujesz , będąc dokładnym przechowujesz dane + handler (KB ale co mi tam) = więcej zużytego miejsca
- Kontrola / Elastyczność --> Tu akurat racja , tylko co byś chciał od sesji? Żeby obiad gotowała za Ciebie?
- i wiele innych --> Czyli?

fifi209 Wyprzedziłeś mnie o kilka sec :/
wNogachSpisz
Odpowiedzi na wszystkie te pytania udzieliłem wcześniej w bierzącym topicu, zapraszam do korzystania ze scrollUp.
nekomata
Nie udzieliłeś żadnych odpowiedzi , naprawdę może fora pomyliłeś i rozmawiałeś kosmitami o takich samych nickach jak nasze na forum typu IP Board z takim samym layoutem... nie wiem niewnikam , zapraszam do korzystania ze pageUp bo scroll Ci chyba nie działa.
Fifi209
Cytat(wNogachSpisz @ 8.04.2011, 00:08:43 ) *
bierzącym topicu

Jak już wcześniej wspominałem, z nerwów chyba sam nie wiesz co piszesz. smile.gif

Wracając do, któregoś z Twoich poprzednich postów - owszem, czytałem temat od początku do końca.

Może wreszcie skończysz wygłaszać swoje herezje w tym temacie i poprzesz swoje tezy konkretnymi argumentami? Tak się robi w normalnej dyskusji.
Sądząc po Twoich nerwach i wielkiej frustracji nie jesteś przyzwyczajonych do wypowiadania się w kulturalny sposób.
wNogachSpisz
wyżej są linki
nekomata
Pierwszy jest google , niezbytnio precyzuję to twoje zdanie.Drugi w ogóle nie ma nic do tematu bo jest o tym jak używać sesji w CodeIgniterze(Czyżbyś nauczy się codeignitera 2 dni temu i szpanował?).
szymonstawi
Cytat(wNogachSpisz @ 7.04.2011, 23:47:12 ) *
J
Ba, nie mam też czasu na pisanie własnego mechanizmu sesji, dlatego korzystam z gotowych, o czym pisałem pare postów wcześniej - i znowu kłania się ignorancja przejawiająca się braniem udziału w dyskusji bez wcześniejszego przeczytania topicu w całości... Żałosne.

moglbys podac przyklady tych mechanizmow? bardzo by sie to przydalo nie tylko mi, bo ciezko znalezc cos konkretnego w necie
wNogachSpisz
Cytat(nekomata @ 8.04.2011, 00:30:58 ) *
Pierwszy jest google , niezbytnio precyzuję to twoje zdanie.

Kliknij weń a wyświeltli się lista luk bezpieczeństwa w PHP Session.
Było ich na przestrzeni lat całkiem sporo.

Cytat(nekomata @ 8.04.2011, 00:30:58 ) *
Drugi w ogóle nie ma nic do tematu bo jest o tym jak używać sesji w CodeIgniterze

Ma dokładnie wszystko wspólne z tematem.
Jest to alternatywna implementacja mechanizmu sesji, dokładnie to o czym mówie od parunastu postów..

Cytat(nekomata @ 8.04.2011, 00:30:58 ) *
(Czyżbyś nauczy się codeignitera 2 dni temu i szpanował?).

Przestań bredzić.
nekomata
Więc tak , po 1 : apropo "bredzenia" twój link z google odnosi się do hasła "php session vuln" (miałeś na myśli wulkan chyba.. albo vulnerability , osobiście obstawiam wulkan)
po 2 : Tak tylko jakbyś czytał dokładniej manual'a od code ignitera którego zręcznie dorzuciłeś do tematu (nawet nie musiałbyś dokładnie czytać bo jest w divie na całą szerokość strony z czerwonym tłem)
Cytat
The Session class does not utilize native PHP sessions. It generates its own session data, offering more flexibility for developers.
Tak , flexibility a nie safety.
Kontynuując o linku z google , mimo swojej niepoprawności dał trochę info o temacie np. Wikipedia - Session poisoning Jak można przeczytać są tam opisane dwie metody "złamania" sesji , pierwsza opisuję "durne", bo nie można tego inaczej nazwać przekazywanie danych do GET. Ostatnia zaś opisuję sytuację na serwerze typu "shared" którą już poruszyliśmy wcześniej. I myślę że została całkiem prosto rozwiązana funkcją session_save_path , a i tak myślę że własny handler sesji jest Zbędny , nie lepiej by było najprościej w świecie zabezpieczyć istniejącą sesję?Nie bo po co , po co rozwijać istniejący mechanizm w tym niema żadnego sensu ! Lepiej tworzyć od nowa mechanizm który będzie miał więcej bugów niż linijek. thumbsdownsmileyanim.gif , wiesz co .. najlepiej porzuć PHP , po co ci taki język w którym luk bezpieczeństwa przestrzeni lat było całkiem sporo. napisz własny język mhmm może nazwij go "MojeEgoJestTakWielkieZeNieZauwazamWlasnychBledow" w skrócie "MEJTWZNZWB" chwytliwa nazwa.
bugmenot
Cytat(szymonstawi @ 7.04.2011, 11:10:18 ) *
czyli jak?

Tu jest wszystko opisane:
http://blog.rabinek.pl/2006/07/15/katalog-z-haslem/
nekomata
Przecież jak tak zrobisz to żaden użytkownik nie będzie miał dostępu do strony , strony mają być bezpieczne a nie zablokowane.
bugmenot
Z tego, co się orientuję, to wystarczy wrzucić .htaccess do wybranego katalogu i już - zablokowany jest katalog, a nie cała strona. .htpasswd ma pozostać poza public_html (czy jak tam go zwać).
Gość
moglby ktos napisac jak wykorzystac to session handler? w dokumentacji jakos dziwnie to jest wytlumaczone
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.