![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 7.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
troche sie zblokowalem. Mam nastepujacy przypadek uzycia : - user loguje sie na strone z kompa 1 (ustawiamy sesje i cookie etc.) - ten sam user dokonuje proby zalogowania na strone tyle ze z kompa 2 Jak wykryc taki przypadek i wygasic sesje (wylogowac) tego usera z strony otwartej na kompie 1 i pozostawic sesje na kompie 2 ? Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Session handler który zapisuje sesje do bazy. Dodajesz do niego dodatkowe pole "login" W ktory,m trzymasz id badz login zalogowanego na ta sesje uzytkownika. Przy probie zalogowania z innego kompa usuwasz pierwsza sesje z tym samym loginem i voila.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Albo prościej -> stworzyć dodatkową kolumnę `logged_ip` i przy logowaniu zapisawać do niej IP użytkownika -> $_SERVER['REMOTE_ADDR'];
i teraz w skrypcie:
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Przecież drugi komputer może mieć inne ip.
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@wookieb, nie wiem czy my się dobrze zrozumieliśmy, ale mój przykład właśnie ilutruje taki przypadek
![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Racja przepraszam
![]() ![]() ![]() -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Myślę, że podświadomie autorowi tematu chodziło o sytuację, gdzie są dwie oddzielne sieci, ale tego nie wiem. Ma dwa rozwiązania, które w zupełności wystarczy, niech sobie wybierze
![]() // ADD Jeszcze jedna możliwość: dodatkowa kolumna z PHPSESSID i porównywanie go analogicznie jak z moim ostatnim przykładem -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Racja przepraszam ![]() ![]() ![]() Da się wyciągnąć ip komputera, a nie sieci. Ja się nie spotkałem z sytuacją, w której dwie różne osoby miały ten sam IP na dwóch różnych komputerach w tym samym czasie. Poszukaj w necie informacji o nagłówkach: FORWARDED FORWARDED_FOR FORWARDED_FOR_IP HTTP_FORWARDED HTTP_FORWARDED_FOR HTTP_FORWARDED_FOR_IP X_FORWARDED X_FORWARDED_FOR HTTP_X_FORWARDED HTTP_X_FORWARDED_FOR CLIENT_IP HTTP_CLIENT_IP VIA HTTP_VIA HTTP_PROXY_CONNECTION Któryś z nich będzie zawierał właściwe IP. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@batman, osobiście jestem za NAT'em. Mam 3 komputery i jak zamierzasz wyciągnąć IP mojego komputera z tej sieci
![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Jak już pisałem, nie spotkałem się z taką sytuacją, by nie można było wyciągnąć konkretnego IP. Nie mam teraz jak tego udowodnić, więc nie będę się upierał.
-------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Pamiętam o tych zmiennych ale chociażby takie X_FORWARDED_FOR nie jest dostępne domyślnie (o ile dobrze pamiętam) i o takie coś trzeba prosić administratora serwera. Poprawcie mnie jeżeli się mylę.
Nie jestem pewien, czy wyciągnie to adresy ip za NAT-em ale jeżeli tak to nadal sprawia to możliwość posiadania tych samych ip. Login jest o tyle unikalny, że nie zależy od komputera dlatego jest najbardziej uniwersalny. //EDIT Tak jak myślałem, nie wszędzie to działa. http://wookieb.pl/test_ip.php
//EDIT Argument ZYX'a mówi wszystko Ten post edytował wookieb 26.05.2009, 09:32:34 -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Zawsze można dorzucić jeszcze jeden warunek – USERAGENT przeglądarki internetowej – wtedy wyloguje nie tylko korzystając z innego komputera ale też z innej przeglądarki – oczywiście wszystkie te warunki połączyć - pomińmy sytuację że ktoś poustawia w przeglądarkach te same nagłówki ;p
pozatym przechowując paskey sesji to wcześniej zaniczyścić go np. czasem logowania (zapamiętać to także w bazie) - wtedy oba komputery na pewno będą miały różne paskey'e a jeden nieaktualny ![]() Ten post edytował zegarek84 26.05.2009, 09:17:28 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Opieranie zabezpieczeń sesji na adresie IP innym niż REMOTE_ADDR to zagrożenie dla bezpieczeństwa (przypomnę, że parę dziur w phpBB polegało właśnie na użyciu X_FORWARDED_FOR i podobnych wynalazków). Dlaczego? REMOTE_ADDR to adres, z którego serwer otrzymał żądanie HTTP i na który będzie odsyłać odpowiedź. X_FORWARDED_FOR i podobne to zwykłe nagłówki HTTP, które nie muszą być ustawione lub może być w nich dosłownie cokolwiek, nawet coś bezsensownego. Zawartość takiego nagłówka można prosto zmanipulować i wykorzystać go do oszukania systemu zabezpieczeń na nim bazującego.
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Wszystkie nagłówki można zmodyfikować, więc ślepe poleganie na danych pochodzących od użytkownika jest co najmniej głupie.
Za każdym razem należy sprawdzić, czy mamy do czynienia z adresem IP. ~Zyx Twoje twierdzenie jest równie odkrywcze jak stwierdzenie, że niefiltrowane dane $_GET lub $_POST są niebezpieczne. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
~Zyx Twoje twierdzenie jest równie odkrywcze jak stwierdzenie, że niefiltrowane dane $_GET lub $_POST są niebezpieczne. Uwierz znajdzie się stado osób, które są pewne tego że dane te (REMOTE_ADDR, X_FORWARDED_FOR) są zaufane. Dla ciebie takie stwierdzenie może nie jest odkrywcze ale dla innych jak najbardziej. Dlatego też taki komentarz jest zbędny. Ten post edytował wookieb 26.05.2009, 09:43:56 -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Jeśli ktoś nie zna podstaw bezpieczeństwa, to już nie mój problem. Przecież nie będę odpowiadał na pytanie i dodawał do tego wypracowania na 30 stron, zawierającego wszystkie aspekty poruszanej sprawy, od bezpieczeństwa zaczynając, na taktowaniu procesora kończąc.
Koniec OT. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 1 Dołączył: 26.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, troche sie zblokowalem. Mam nastepujacy przypadek uzycia : - user loguje sie na strone z kompa 1 (ustawiamy sesje i cookie etc.) - ten sam user dokonuje proby zalogowania na strone tyle ze z kompa 2 Jak wykryc taki przypadek i wygasic sesje (wylogowac) tego usera z strony otwartej na kompie 1 i pozostawic sesje na kompie 2 ? Pozdrawiam Robisz to w ten sposób ze w momencie logowania generujesz sobie losowy ciag znakow i zapisujesz sobie w bazie danych w tabeli users i w sesji ta wratosc. Potem tylko zostaje sprawdzenie czy wartosc w sesji jest taka sama jak w bazie danych jesli nie niszczysz sesje |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 05:56 |