Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Koszyk w sesji czy w bazie?
usb2.0
post
Post #1





Grupa: Zarejestrowani
Postów: 341
Pomógł: 25
Dołączył: 28.09.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witam
jak w temacie
sam nie wiem jak do końca to rozwiązać więc czekam na za i przeciw.
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Niktoś
post
Post #2





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
No właśnie nie mógłbyś byś. Bo jak wtedy zidentyfikujesz użytkownika bez sesji?

No właśnie nie czytałeś, albo zbyt ogólnikowo to napisałem.Mógłbym dla każdego użytkownika utworzyć unikalny token i zapisać w MSSQL, czy MySQL i według tego identyfikować kosz dla użytkownika.Wcale bym nie musiał używać SID'a sesji,ale po co-to rozwiązanie jest łatwiejsze.Jak nie będzie spełniało moich wymogów bezpieczeństwa(będą częste manipulacje), to utworzę dodatkową kolumnę w bazie MSSQL z unikatowym tokenem.Na razie nie ma ani jednego odwołania do bazy danych MSSQL w moim systemie koszyka.Następuje dopiero przy realizacji zamówienia i o taki efekt mi chodziło.

Cytat
a więc jesteś narażony na wszystkie ataki (które wymieniłeś), co gorsza - korzystasz z ciasteczek, a więc ktoś może przechwycić twoje dane!

I tutaj się bardzo mylisz, bo ja nie zapisuję danych do ciasteczek ,tylko SID ,żeby sesję podtrzymać jak ktoś zamknie browser i wróci ponownie, dane zaś siedzą sobie w nierelacyjne bazie danych,czyli w oddzielnej aplikacji.
Jak nawet ktoś zmanipuluje danymi czy to w cookies,czy w sesji to po prostu otrzyma inny (czyjś)koszyk,ale nie zmieni samych danych(kwot,nazw przedmiotów,adresu itp.),bo te dane siedzą w nierelacyjnej bazie danych,ewentualnie doda nowy produkt lub jakiś usunie i tyle uda mu się uzyskać nic poza tym.

W przypadku manipulacji koszyku opartym na sesji,przechwycenie ,czy wstrzyknięcie(poisoning) może mieć znacznie gorsze konsekwencje np. manipulacja danymi ,podmiana kwot ,podmiana nazw produktów itp., gdyż wszystkie dane są (zserializowane) i umieszczone w sesji.Nie wiem jak przebiega dokładnie ataki na sesje ,czy są trudne ,czy w ogóle praktycznie możliwe, ale możliwości ataków są i nie należy ich wykluczać.

I teraz takie praktyczne pytanie:Można przejrzeć liczne tematy, liczne fora i wszędzie programiści piszą :"nie przechowuje się haseł w sesjach !". Dlaczego tak piszą, jeżeli rzeczywiście sesje są tak bezpieczne jak co niektórzy piszą?
EDIT: @DOWN
Cytat
Nie chodzi o to gdzie zapiszesz ten identyfikator tylko w jaki sposób użytkownik będzie Ci go przesyłał jeśli nie przez mechanizm sesji?

W końcu zajarzyłem-np.przez geta w urlu.
Cytat
Na razie nie ma ani jednego odwołąnia do bazy danych w moim systemie koszyka

Cytat
Te 2 chyba trochę sobie przeczą....

Chodziło mi o bazę danych MSSQL.Poprawiłem bo faktycznie namieszałem.
Cytat
ale na pozostałe rodzaje ataków Twój sposób już jest narażony, bo przykładowo jak hacker ukradnie użytkownikowi sesje, żeby się za niego poszyć to nie ma w tym momencie znaczenia czy masz sesję opartą o bazę, pliki, czy ram.

Nie, globalnie mam flagę httpOnly na coocies,dodatkowo mogę wprowadzić flagę secure na sesje(wymaga ssl).

Nie chce nabijać postów więc odpowiadam tutaj.

Ten post edytował Niktoś 6.05.2012, 21:11:02
Go to the top of the page
+Quote Post
greycoffey
post
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Cytat(Niktoś @ 6.05.2012, 21:14:41 ) *
No właśnie nie czytałeś, albo zbyt ogólnikowo to napisałem.Mógłbym dla każdego użytkownika utworzyć unikalny token i zapisać w MSSQL, czy MySQL i według tego identyfikować kosz dla użytkownika.Wcale bym nie musiał używać SID'a sesji,ale po co-to rozwiązanie jest łatwiejsze.Jak nie będzie spełniało moich wymogów bezpieczeństwa(będą częste manipulacje), to utworzę dodatkową kolumnę w bazie MSSQL z unikatowym tokenem.Na razie nie ma ani jednego odwołąnia do bazy danych w moim systemie koszyka.Następuje dopiero przy realizacji zamówienia i o taki efekt mi chodziło.

Czyli używasz SIDa - btw. SID to Session IDentity, czyli jakikolwiek identyfikator sesji.

Cytat(Niktoś @ 6.05.2012, 21:14:41 ) *
I tutaj się bardzo mylisz, bo ja nie zapisuję danych do ciasteczek ,tylko SID ,żeby sesję podtrzymać jak ktoś zamknie browser i wróci ponownie, dane zaś siedzą sobie w nierelacyjne bazie danych,czyli w oddzielnej aplikacji.
Jak nawet ktoś zmanipuluje danymi czy to w cookies,czy w sesji to po prostu otrzyma inny (czyjś)koszyk,ale nie zmieni samych danych(kwot,nazw przedmiotów,adresu itp.),bo te dane siedzą w relacyjnej bazie danych,ewentualnie doda nowy produkt lub jakiś usunie i tyle uda mu się uzyskać nic poza tym.

Ech.. Sesja a ciastka łączą się tym, że ciastka zawierają bardzo czesto SID - a to jest dobrym rozwiązaniem. Jedynie idioci (z punktu bezpieczeństwa) zapisują dane przeznaczone dla sesji w ciasteczkach.
To twoje zachowanie cechuje się dla praktycznie każdej sesji, a możliwo·ść ataku Session Poisoning to wina programisty.

Cytat(Niktoś @ 6.05.2012, 21:14:41 ) *
W przypadku manipulacji koszyku opartym na sesji,przechwycenie ,czy wstrzyknięcie(poisoning) może mieć znacznie gorsze konsekwencje np. manipulacja danymi ,podmiana kwot ,podmiana nazw produktów itp., gdyż wszystkie dane są (zserializowane) i umieszczone w sesji.Nie wiem jak przebiega dokładnie ataki na sesje ,czy są trudne ,czy w ogóle praktycznie możliwe, ale możliwości ataków są i nie należy ich wykluczać.

Ponownie: g**** wiesz. Jak już wyżej wspomniałem, Session Poisoning to wina daremnego programisty, który tworzy potworki typu:
  1. $_SESSION[$_GET['name']] = $_GET['value'];

A przechwycenie sesji, jak wyżej wspomniałeś: zmanipuluje danymi czy to w cookies,czy w sesji to po prostu otrzyma inny (czyjś)koszyk,ale nie zmieni samych danych(kwot,nazw przedmiotów,adresu itp.),bo te dane siedzą w relacyjnej bazie danych,ewentualnie doda nowy produkt lub jakiś usunie i tyle uda mu się uzyskać nic poza tym.

Cytat(Niktoś @ 6.05.2012, 21:14:41 ) *
I teraz takie praktyczne pytanie:Można przejrzeć liczne tematy, liczne fora i wszędzie programiści piszą :"nie przechowuje się haseł w sesjach !". Dlaczego tak piszą, jeżeli rzeczywiście sesje są tak bezpieczne jak co niektórzy piszą?

Nie przechowuje się haseł w sesjach. Nie przechowuje się cen produktów w sesjach. Nie przechowuje się nazw przedmiotów w sesjach.
Sesje poprawnie zaimplementowane są bezpieczne, jednak zgodnie z zasada przezorny zawsze ubezpieczony oraz atomowości danych, nie przechowuje się rzeczy stałych (nazwa produktu, cena) tylko identyfikator (wskaźnik) do nich. Sesje są ulotne, nie ma sensu klonować bytów. Czy w twojej implementacji sesji nei da się wstawić ceny do sesji? Jeśli tak, to gratuluje pomysłowo·ści oraz świetnej sztucznej inteligencji.

Cytat(Niktoś @ 6.05.2012, 21:14:41 ) *
Nie wiem jak przebiega dokładnie ataki na sesje ,czy są trudne ,czy w ogóle praktycznie możliwe

I to podsumowywuje twój poziom wiedzy. Nie wiesz jak ich dokonać, nie wiesz jak się przed nimi bronić. Nie wiesz nawet, czy to, przed czym się "bronisz" jest możliwe. Praktykę i teorię trzeba łączyć. A tutaj widzę, że nawet teorii nie ma. Session Hijacking jest możliwe w praktycznie każdej implementacji sesji, kiedy połączenie nie jest szyfrowane w obrębie całego zasięgu ciastka z SIDem (chociaż wtedy można pewnie dokonać MITM). Session Fixation to właściwie brute-force na identyfikatorze sesji, tutaj siła zabezpieczenia jest równa ilości wszystkich możliwych identyfikatorów sesji. Sesion Poisoning to już wina programisty-idioty, jak już wcześniej wspomniałem.

Update do twojego update^^:
Cytat(Niktoś @ 6.05.2012, 21:14:41 ) *
Nie, globalnie mam flagę httpOnly na coocies,dodatkowo mogę wprowadzić flagę secure na sesje(wymaga ssl).

To nei wyklucza ataku MITM, CSRF w celu uzyskania identyfikatora sesji. Dodatkowo, SID może być generowany po kolei przez włamywacza, w celu trafienia na jakiś - tutaj przydają się dodatkowe zabezpieczenia jak np. sprawdzanie czy w jednej sesji nie zmienił się USER_AGENT, akceptowane języki etc. - stałe ustawienia danej przeglądarki.


Ten post edytował greycoffey 6.05.2012, 21:15:43
Go to the top of the page
+Quote Post

Posty w temacie
- usb2.0   Koszyk w sesji czy w bazie?   5.05.2012, 19:17:43
- - patrysiek2   Według mnie lepiej w sesji.   5.05.2012, 19:32:44
- - marcio   Cytat(patrysiek2 @ 5.05.2012, 20:32:4...   5.05.2012, 20:01:54
- - greycoffey   To jest dana, które pasuje TYLKO do sesji - a czy ...   5.05.2012, 20:23:28
|- - r4xz   Cytat(greycoffey @ 5.05.2012, 21:23:2...   5.05.2012, 21:17:54
- - Niktoś   Ja zrobiłem koszyk oparty o nierelacyjną bazę dany...   5.05.2012, 21:25:55
- - Fifi209   Jak najbardziej coś w stylu pomysłu Niktosia. Dlac...   5.05.2012, 22:57:08
- - usb2.0   nie wiem czy się zbijasz @up czy mówisz poważnie a...   5.05.2012, 23:03:59
|- - Fifi209   Cytat(usb2.0 @ 6.05.2012, 00:03:59 ) ...   5.05.2012, 23:06:14
- - bastard13   Zależy, czy po wyłączeniu przeglądarki i uruchomie...   5.05.2012, 23:12:18
- - usb2.0   no brzmi całkiem sensownie sory ze zwiątpiłem no p...   5.05.2012, 23:13:05
- - Niktoś   Może generalizuje ,ale: sesja= session hijacking,...   6.05.2012, 00:06:38
- - Fifi209   Cytat(usb2.0 @ 6.05.2012, 00:13:05 ) ...   6.05.2012, 04:56:15
- - spokoloko123   Bardzo wygodnie wszystko jest rozwiązane na helion...   6.05.2012, 05:44:26
- - Niktoś   Dane koszyka to raczej dane temporalne-użytkownik ...   6.05.2012, 09:16:17
- - usb2.0   skorzystałem z rady @Fifi209 i oparłem to na seria...   6.05.2012, 09:29:10
- - Niktoś   Nom w darmowym ,czy nawet płatnym hostingu tego ni...   6.05.2012, 09:31:44
- - greycoffey   Cytat(Niktoś @ 6.05.2012, 01:06:38 ) ...   6.05.2012, 10:02:11
- - usb2.0   brzmi sensownie   6.05.2012, 10:05:10
- - greycoffey   Btw. PHP oferuje nawet podstawowe API do tworzenia...   6.05.2012, 10:13:42
- - Niktoś   CytatNiktosiu, w takim razie w jaki sposób impleme...   6.05.2012, 10:19:19
|- - greycoffey   Cytat(Niktoś @ 6.05.2012, 11:19:19 ) ...   6.05.2012, 10:37:13
- - Niktoś   CytatPrawde mówiąc: gówno wiesz na temat tych atak...   6.05.2012, 11:46:49
|- - greycoffey   Cytat(Niktoś @ 6.05.2012, 12:46:49 ) ...   6.05.2012, 12:09:56
- - tehaha   Cytatnierelacyjne bazy danych w cache komputera do...   6.05.2012, 12:17:54
- - wNogachSpisz   Pytanie dobre, ale obawiam się że autor w zależnoś...   6.05.2012, 12:41:01
- - greycoffey   Generalnie najlepiej zaimplementować to w PHP 5.4 ...   6.05.2012, 12:45:03
- - Niktoś   CytatW jakim cache komputera? Mógłbyś to rozwinąć?...   6.05.2012, 15:29:44
- - tehaha   CytatTak,relacyjne(MySql, MSSQL ,inne) jak i nie r...   6.05.2012, 16:47:56
- - Niktoś   CytatNie to nie są sesje, sesja to mechanizm pozwa...   6.05.2012, 17:45:41
|- - r4xz   Cytat(Niktoś @ 6.05.2012, 18:45:41 ) ...   6.05.2012, 18:33:52
- - tehaha   CytatRównie dobrze mógłbym w MSSQL ,czy w MYSQL ut...   6.05.2012, 18:38:07
- - greycoffey   Cytat(r4xz @ 6.05.2012, 19:33:52 ) w ...   6.05.2012, 18:42:50
- - Niktoś   CytatNo właśnie nie mógłbyś byś. Bo jak wtedy zide...   6.05.2012, 20:14:41
|- - greycoffey   Cytat(Niktoś @ 6.05.2012, 21:14:41 ) ...   6.05.2012, 21:12:06
- - tehaha   CytatMógłbym dla każdego użytkownika utworzyć unik...   6.05.2012, 20:44:08
- - aachi   Przepraszam, że się wtrącam w waszą dyskusję, ale ...   6.05.2012, 21:24:41
- - Niktoś   A niech to odpalę troszeczkę kodu ,mam nadzieję ,ż...   6.05.2012, 22:00:34
- - Fifi209   Niktoś robisz straszny burdel w kodzie. Czemu dane...   6.05.2012, 22:31:19
- - tehaha   To co pokazałeś to jest sesja oparta o bazę. Cytat...   6.05.2012, 22:33:45
- - mortus   @Niktoś: SQLSpaces nie jest nierelacyjną bazą dany...   6.05.2012, 23:29:20
- - Niktoś   CytatSidejacking is still a problem for many sites...   6.05.2012, 23:46:02
|- - mortus   Cytat(Niktoś @ 7.05.2012, 00:46:02 ) ...   7.05.2012, 08:14:19
- - tehaha   CytatAle żeś mi armatę wystawił, chyba najgorszy a...   7.05.2012, 01:26:17
- - spokoloko123   Zrobienie tego w sesji jest po prostu głupie. Nikt...   7.05.2012, 06:01:31
- - m44   spokoloko123 w jaki sposób chcesz to zrobić, jeśli...   7.05.2012, 08:07:18
|- - spokoloko123   Cytat(m44 @ 7.05.2012, 09:07:18 ) spo...   7.05.2012, 08:21:23
|- - mortus   Cytat(spokoloko123 @ 7.05.2012, 09:21...   7.05.2012, 08:53:19
- - Niktoś   Cytat- zapisanie zawartości koszyka w bazie danych...   7.05.2012, 09:28:52
|- - mortus   Cytat(Niktoś @ 7.05.2012, 10:28:52 ) ...   7.05.2012, 09:36:09
- - spokoloko123   @mortus Nie rozumiesz zasad e-commerce. Nie będę t...   7.05.2012, 18:57:43
|- - mortus   Cytat(spokoloko123 @ 7.05.2012, 19:57...   7.05.2012, 19:17:18
- - tehaha   @spokoloko123 pomysł bardzo fajny, ale i tak ten k...   7.05.2012, 19:29:33
- - Niktoś   Taka analiza ma tylko i wyłącznie sens w przypadku...   7.05.2012, 19:34:58
|- - mortus   Cytat(Niktoś @ 7.05.2012, 20:34:58 ) ...   7.05.2012, 19:43:39
- - Niktoś   No ale jeśli użytkownik nie będzie zarejestrowany,...   7.05.2012, 19:57:06
|- - mortus   Cytat(Niktoś @ 7.05.2012, 20:57:06 ) ...   7.05.2012, 20:05:15
|- - uupah5   Cytat(Niktoś)No ale jeśli użytkownik nie będzie za...   8.05.2012, 07:43:47
- - tehaha   @Niktoś identyfikacji użytkownika pomiędzy żądania...   7.05.2012, 20:07:16
- - viking   Tak czytam i aż mnie dziw bierze jak bardzo ludzie...   8.05.2012, 06:16:33


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 22:40