Temat: Sesja między PHP a Node.js czy wieloma serwerami - pomysły ?
Michał Łaszczewski:Dariusz Półtorak:
Co oznacza że w momencie gdy ktoś przejmie moje ciastko, ma jakimś cudem moje IP i uda mu się otworzyć poprawnie stronę - w momencie gdy zrobię COKOLWIEK na stronie użyje stary hash i w tym momencie sesja zostanie ubita dla nas obu.
SSL swoją drogą ale zawsze dobrze jest mieć coś takiego pod ręką.
A co jeśli ktoś ma otwarte 2 okna w tej samej sesji? np. otworzy drugie za pomocą ctrl+click - wtedy będzie miał stary hash w jednym z okien. Jednocześnie jeśli ktoś jest w stanie przechwycić Twoje ciasteczko to:
1. Stoi między Tobą a serwerem - żadne zabezpieczenie Cie nie uratuje.
2. Zrobił XSS - jak wyżej
3. Ukradł Ci pliki z komputera = ma do niego dostęp
Tak więc to zabezpieczenie jest daremnym łataniem dziur, aby troszkę urozmaicić hakerowi zabawę.
Michale, chyba Ci troszkę doświadczenia brakuje albo zwyczajnie się zagalopowałeś. Podając domenę oraz path "/" mam ciasteczko które jest widoczne z każdego adresu URL w obrębie zarówno domeny jak i jej subdomen.
Ciasteczko nie jest (jak chyba sugerujesz) widoczne tylko dla jednej karty. Jest zmieniane w obrębie przeglądarki i domeny pod którą jesteś - każdy request używa aktualnego ciasteczka niezależnie z której karty jest robiony.
Także mogę mieć gazylion zakładek a i tak ciasteczko w każdej jest odczytywane i przesyłane do serwera prawidłowo.
Może oczywiście otworzyć stronę w innej przeglądarce ale wtedy będzie działał na 2 oddzielnych sesjach.
Jeżeli ktoś przechwyci moje ciasteczko w jakikolwiek sposób - tak długo jak je dostanę nie będzie w stanie długo nic robić bo request z 2 różnych miejsc ubije sesje. Nie będzie się zgadzało IP bądź hash. Ten ktoś musiał by przechwycić ruch a później przesłać mi zupełnie inne dane od ID sesji zaczynając. Ale jak może zrobić coś takiego to żadne zabezpieczenie nie pomoże.
XSS to nie moja działka bo jak nawet wspomniałeś session hijacking to nie jedyna rzecz jaką ktoś może zrobić. Dla mnie jako osoby piszącej rozwiązanie związane z obsługą sesji ważne jest by session hijacking nie był skuteczny bo sam XSS może wiele.
I tutaj dalej w grę wchodzi IP i hash. I tu wszystko zależy od klienta. Ciasteczka są httpOnly co znacząco utrudnia zadanie atakującemu. Więc raczej będzie miał trudności ze zmianą ID u mnie. A jeżeli nie zmieni ID to obaj wywołamy stronę gdzie jeden z nas będzie miał zły hash. I w tym momencie sesja zostanie ubita.
Jeżeli ktoś jakimś cudem ma przeglądarkę w której httpOnly nie działa - dupa zbita. Może Ci zmienić ID sesji i ją całkowicie przechwycić. Ale niestety jak ktoś ma pełny dostęp do ciasteczek na twoim PC to niestety może zrobić wszystko niezależnie jaki mechanizm sesji zrobisz. Chyba że zaczęli byśmy się bawić w nieśmiertelne ciasteczka czyli mechanizm który składa je w każdym możliwym miejscu (z flashem na czele) i starannie patrzy czy ktoś nie stara się z nimi coś robić.
Jak mi ukradł pliki z komputera to też nie jest kwestia problemu o którym rozmawiamy.
Dlatego właśnie proszę byś zostawił dyskusję komuś kto się orientuje w temacie.
@Michał Ł. to nie personalne wycieczki tylko fakty. Dopiero co skończyłeś szkołę, obstawiam że jeszcze nie byłeś w normalnej pracy i szczerze powiedziawszy większość tego co mówisz to głupoty.
Normalna praca jest dla tych którzy sami nie wiedzą co robić(to musi im ktoś powiedzieć), poza tym podatki w Polsce są za duże :) Wolę robić biznesy xD
Porozmawiajmy jak te "biznesy" zrobisz. Poza tym na Twoim miejscu nie pisał bym takich rzeczy publicznie bo CI się skarbówka przypatrzy mocniej.
Ja Ci dobrze mówię żebyś programował sobie w Javie czy C++ a programowanie w PHP zostaw tym którzy wiedzą jak jego elastyczność wykorzystać.
No ale przecież ja nie chce programować w PHP, gdyby PHP był taki dobry i elastyczny to nie używał byś Node.JS :) Umiem pisać w PHP, napisałem w nim nawet kiedyś bota na IRC, ale to nie zmienia faktu że ten język jest paskudny i zupełnie się do niego zraziłem. Tak w ogóle to ta grupa jest o języku JavaScript a nie o PHP czy Node.JS.
Ale temat jest o współpracy pomiędzy Nodem a PHP i fajnie by było gdyby osoby rozmawiające znały PHP. Dlatego od początku zastanawiam się co tu robisz oprócz marnych prób ewangelizacji i nic nie wnoszącej dyskusji.
Dariusz Półtorak edytował(a) ten post dnia 04.11.12 o godzinie 11:34