Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pomysł na stałe, mobline IP ?
Forum PHP.pl > Forum > Przedszkole
MrSnoop
Witam,

To mój pierwszy wątek więc prosze o wyrozumiałość jeśli coś skleję nie tak. smile.gif Ale do rzeczy.

Czy ktokolwiek wpadł na pomysł, w jaki sposób rozpoznać urządzenie mobline, łączące się z aplikacją internetową za pomocą sieci 3G, 4G? Główny problem jest taki, że gdy użytkownik łączy się z aplikacją za pomocą własnej sieci no to nie ma problemu IP przeważnie jest to samo. W przypadku sieci mobilnej adres pod zmienną

Kod
$_SERVER['REMOTE_ADDR']


jest za każdym razem inne, co jest oczywiste.

Jest opcja sprawdzenia dostawcy albo lepiej, operatora sieci komórkowej, więc jest to jakieś zawęrzenie, ale jak rozpoznać, że to jest właśnie to urządzenie, które w tym przypadku chcemy dopuścić do aplikacji.

Pozdrawiam
Mlodycompany
Chcesz rozpoznać urządzenie mobilne po IP? A co jeśli podłącze telefon do komputera i uruchomię z niego internet?
php__amator
Kolega zamierza szpiegować smile.gif
Mlodycompany
nawet szpiegowanie po samym IP nie za bardzo mu wyjdzie
MrSnoop
Nie nie Panowie to nie w tym sensie smile.gif Nie chcę szpiegować, a znaleźć metodę, która w 99% będzie w stanie rozpoznać urządzenie, które łaczy się z aplikacją internetową. Myślę nad stworzeniem systemu do tzw. urządzeń zaufanych.

Wiem IP odpada.

Może kod QR? Nie będzie odróżniał urządzenia, ale użytkownika posiadającego prawo logowania napewno smile.gif
freemp3
Może po prostu używając ciasteczek?
Crozin
1. Nagłówek HTTP User-Agent.
2. Jakieś triki z wykorzystaniem JavaScriptu.
MrSnoop
@freemp3 tak tak byłoby to najlepszym rozwiązaniem, no ale ciasteczka można wyłączyć...

@Crozin Możesz coś więcej napisać na temat HTTP User-Agent? Bo nie do końca rozumiem...

Odnośnie zmiennej $_SERVER['HTTP_COOKIE'] nie używałem jej jeszcze nigdy. Może mi ktoś wyjaśnić jak ona działa? Zauważyłem że nie jest generowana w przypadku wejścia np ze smartfona
Mlodycompany
User Agent to identyfikator przeglądarki. Po nim możesz dojść do tego z jakiej przeglądarki user korzysta, z jakiego systemu etc.
freemp3
Cytat
@freemp3 tak tak byłoby to najlepszym rozwiązaniem, no ale ciasteczka można wyłączyć...

W takim przypadku możesz wyświetlić, komunikat o konieczności włączenia ciasteczek.
!*!
http://codereview.stackexchange.com/questi...etection-script
Lub podobne... poszukaj czegoś dla Symfony 2 lub Zend Framework, bodajże są bardziej rozbudowane. I pamiętaj że informacje te można łatwo podrobić.
sadistic_son
No najlepiej chyba bo MAC adresie rozpoznawać urządzenia skoro cookies odpadają.
sowiq
Cytat(sadistic_son @ 18.11.2013, 12:47:20 ) *
No najlepiej chyba bo MAC adresie rozpoznawać urządzenia skoro cookies odpadają.


Bardzo ciekawe co piszesz. Możesz rozwinąć myśl i napisać jak mogę odczytać MAC Address urządzenia użytkownika? dry.gif

Cytat(MrSnoop @ 18.11.2013, 10:14:40 ) *
Może kod QR? Nie będzie odróżniał urządzenia, ale użytkownika posiadającego prawo logowania napewno smile.gif


A jaki problem zrobić zdjęcie kodu QR żeby później używać go przez osobę nieuprawnioną? A druga sprawa - nie każdy laptop ma kamerę, nie każdy laptop z kamerą ma odpowiednie oprogramowanie żeby czytać kody QR. A kolejna sprawa - w jaki sposób chciałbyś taki zeskanowany kod wysyłać przez formularz?

Jeśli chodzi Ci wyłącznie o dawanie uprawnień, to czemu nie rozwiążesz tego za pomocą zwykłego systemu logowania? Możesz przecież dorzucić captchę, zrobić blokowanie danego loginu po X błędnych hasłach itp.

Jeśli to Cię nie satysfakcjonuje, to jest ciekawa biblioteka, ale służąca raczej do śledzenia niż uwierzytelniania - http://samy.pl/evercookie/
freemp3
Cytat
jak mogę odczytać MAC Address urządzenia użytkownika?

Tutaj jest jakiś sposób:
http://piotr.kwiatek.org/2008/11/02/php-po...nie-adresu-mac/
Nie wiem czy działa, nie testowałem. Nawet jeśli działa, nie zmienia to faktu, że wyciąganie danych w ten sposób jest marnym rozwiązaniem.
Użycie adresu MAC samo w sobie nie jest złym pomysłem, gdyby PHP na to pozwalał bez takich cyrków. Jednak i to rozwiązanie nie jest bez wad ponieważ adres MAC bez problemu można sobie zmienić. Zwykły użytkownik będzie miał z tym problem, ale już ktoś bardziej obeznany poradzi sobie z tym bez problemu.

Tak jak napisał sowiq chyba najlepszym rozwiązaniem będzie zastosowanie zwykłego systemu logowania.
sowiq
Cytat(freemp3 @ 18.11.2013, 13:31:16 ) *

Hahaha, no proszę Cię, bądźmy poważni smile.gif Rozwiązanie to wydaje mi się równie szalone co np. używanie extract smile.gif Poza tym rozwiązanie to w najlepszym wypadku zwróci informacje o routerze/AP. Nie sądzę, żeby wiele osób w dzisiejszych czasach korzystało z internetu "prosto z kabla" - raczej mają jakieś AP z WiFi.
freemp3
Cytat
Hahaha, no proszę Cię, bądźmy poważni smile.gif Rozwiązanie to wydaje mi się równie szalone co np. używanie extract smile.gif

Dlatego też napisałem, że jest to marne rozwiązanie smile.gif

Cytat
w najlepszym wypadku zwróci informacje o routerze/AP. Nie sądzę, żeby wiele osób w dzisiejszych czasach korzystało z internetu "prosto z kabla" - raczej mają jakieś AP z WiFi.

Fakt. Nie wiem jak to jest w urządzeniach mobilnych, ale zapewne sytuacja wygląda podobnie.
redeemer
Abstrahując już od tego, że adres MAC można sobie dowolnie zmieniać, to jedyny sposób aby go odczytać serwerze, który nie znajduje się razem w nim w sieci lokalnej (tak, adresy MAC są przesyłane tylko w obrębie sieci lokalnych!) to prawdodpobonie użycie jakiegoś flasha, apletu javy czy innego activex.
Mlodycompany
@redeemer jesteś poniekąd w błędzie ponieważ adres mac nie jest przesyłany tylko i wyłącznie w sieci lan. Jest wysyłany wszędzie. Problem polega na tym, że serwer www jest w innej warstwie tcp i mac nie jest dostępny z poziomu serwera www. Jest możliwość wydobycia mac'a na podstawie adresu ip, ale to nie będzie mac komputera z którego jasio kowalski korzysta tylko routera bądź innego urządzenia po drodze do którego to ip się odnosi.
freemp3
Mlodycompany chyba nie do końca zrozumiałeś o co chodziło redeemer-owi. Warstwy nie mają tutaj nic do rzeczy.
Mianowicie wysyłanie pakietu można porównać do listu. Znajduje sie na nim docelowy adres odbiorcy czyli IP. Natomiast adresy MAC są adresami następnych punktów do których list ma dotrzeć: skrzynka na listy, poczta, sortownia, itp. Czyli, Ty wysyłając informacje, w pakiecie masz zawarty Twój adres MAC oraz adres MAC następnego punktu, np. routera. Później router wysyła informacje dalej ale już ze swoim adresem i adresem następnego punktu i tak, aż do odbiorcy. Tak więc odbiorca nie ma bezpośrednio możliwości sprawdzenia adresu MAC nadawcy, a jedynie ostatniego punktu.

Poza tym trochę zboczyliśmy z tematu, więc proponuję zakończyć wątek o adresach MAC wnioskiem, że sprawdzanie urządzenia przy ich pomocy jest złym pomysłem smile.gif
MrSnoop
Okej poddaje się, temat do zamknięcia...

Bardzo duzo było odpowiedzi z wyciągnięciem adresu MAC z komputera z poziomu serwera, więc pytam JAK? Próbowałem paru algorytmów i nic...

@sowiq dzieki przetestuję te ciasteczka smile.gif

Tak dla informacji na stronie Rublona znalazłem taki tekst. https://rublon.com/pl/what/overview

Ciekawi mnie w jaki sposób autor rozwiązał problem urządzeń zaufanych.
-MrSnoop-
Heh dałem do zamknięcia, ale jeszcze jeden wątek chciałem poruszyć smile.gif

Testował już ktos może na tym forum logowanie z rublonem?

Podobno jest to jeden ze 100 najlepszych projektów na świecie, więc... chciałem sprawdzić czy ta aplikacja dodaje urządzenia zaufane za pomocą ciasteczek. No i niestety apka wymaga podania prawidłowego maila, którego oczywiście nie podałem ponieważ to był test. I nie wiem teraz jak go zmienić w panelu, a jego potwierdzenie jest wymagane do poprawnego zabezpieczenia konta.

Jeśli tak to proszę dać info. Myślę, że taki test nie tylko mi byłby bardzo pomocny. smile.gif
Puszy
Przepraszam, ale czy tradycyjny system autoryzacji jest zły? Jakiś login, hasło, token mailem czy cuś?
freemp3
Cytat
Ciekawi mnie w jaki sposób autor rozwiązał problem urządzeń zaufanych.

Cytat
Podobno jest to jeden ze 100 najlepszych projektów na świecie, więc... chciałem sprawdzić czy ta aplikacja dodaje urządzenia zaufane za pomocą ciasteczek.

A sprawdziłeś chociaż, czy po wejściu na tę stronę są tworzone jakieś ciasteczka i jeśli tak to jakie?

Posiedziałem 5 minut i jestem w 95% pewien, że właśnie ciasteczka są wykorzystywane do tego celu. Nie wiem jakie dane są wykorzystwane i jak został rozwiązany problem np. zmiennego IP lub korzystania z wielu przeglądarek, ale tego raczej sie nie dowiesz. Wątpie, żeby autorzy udostępnili algorytmy i mechanizmy.
Jedyne co pozostaje to wziąć kartkę papieru, a najlepiej sporą ilość i zacząć rozpisywać co tak na prawde chcesz zrobić, jaki powinien być efekt końcowy i co trzeba zrobić, żeby ten efekt uzyskać.
-MrSnoop-
O fajnie, że zrobił się lekki ruch.

Taaaa freemp3 sprawdzałem ciasteczka lecą z dwóch domen:

- rublon.pl
- code.rublon.pl

do czasu skanowania kodu apką przez nich udostępnioną, która ma dodać urządzenie do zaufanych. A i zapomniałbym, że chrome dopisuje do nich, że są przechowywane lokalnie. Właśnie nie wiem co się dzieje kiedy usunie się ciasteczka. Zabezpieczenie się powtarza? W ten sposób można po wyłudzeniu danych zabezpieczyć konto własnym urządzeniem, gdy tamten wyczyści cookies... Chyba, że liczy on na to, że przeciętny Kowalski nigdy tego nie robi smile.gif

Puszy

Akurat to nie wystarcza dla projektu, któy stawiać ma głównie na bezpieczeństwo. Użytkownicy często podają swoje dane osobom nieupoważnionym, a skrzynkę podobno "łatwo" przechwycić.

Pracowałem nad evercookie, ale.... fuck jestem phpowcem, a dane wypluwa w js. Nie wiem jak tą tablicę przerzucić do tablic phpowych... ehhhh.... Mniejsza, ale chociaż dowiedziałem się na jakie zróżnicowane sposoby można wrzucać ludziom cookie na komputery. smile.gif A i że są ciastka przechowywane w pamięci masowej bazy danych WOOOOOW smile.gif

freemp3
Cytat
Właśnie nie wiem co się dzieje kiedy usunie się ciasteczka. Zabezpieczenie się powtarza?

Ten problem też być może został jakoś rozwiązany. Dla przykładu aplikacja może sprawdzać czy istnieje ciasteczko z ID urządzenia. Jeśli nie generuje nowe ciasteczko z ID. Następnie dopiero jest sprawdzane czy urządzenie o takim ID jest dodane. Tak więc ciasteczko może służyć jedynie jako cache, aby nie generować cały czas identyfikatora.
-MrSnoop-
Cytat
Dla przykładu aplikacja może sprawdzać czy istnieje ciasteczko z ID urządzenia. Jeśli nie generuje nowe ciasteczko z ID. Następnie dopiero jest sprawdzane czy urządzenie o takim ID jest dodane.


Hmmmm... A jeśli już dodałem urządzenie do zaufanych i na moim komputerze istnieje ciasteczko z ID urządzenia przypisanego do mojego profilu w bazie i następnie je usunę to aplikacja nie znajdzie już ciasteczka z ID już zaakceptowanym, co za tym idzie, nie będzie wiedziała, że to urządzenie zostało już zaakceptowane. Chyba, że czegoś nie zrozumiałem...

Myślę, że najlepszym rozwiązaniem byłaby funkcja sms z jakimś jednorazowym telekodem, bądź tańszym sposobem wiadomość na maila i po wpisaniu kodu przebiegałoby poprawne uwierzytelnienie usera. smile.gif
freemp3
Cytat
Hmmmm... A jeśli już dodałem urządzenie do zaufanych i na moim komputerze istnieje ciasteczko z ID urządzenia przypisanego do mojego profilu w bazie i następnie je usunę to aplikacja nie znajdzie już ciasteczka z ID już zaakceptowanym, co za tym idzie, nie będzie wiedziała, że to urządzenie zostało już zaakceptowane. Chyba, że czegoś nie zrozumiałem...


Znajdzie ponieważ aplikacja ponownie wyliczy ID urządzenia i porówna z tymi znajdującymi się w bazie. Cała sztuka polega na tym, żeby wyliczyć za każdym razem identyczne ID.
-MrSnoop-
Nie rozumiem sory niekiedy mi trzeba wałkować niestety...

Przyjmijmy, że przypisuję ID dla urządzenia wg ustalonego wcześniej algorytmu. Ok, ID zginie mi ID gdziekolwieknie winkam. Mogę je odtworzyć jeśli algorytm przy wyliczaniu ID bierze pod uwagę tylko ustalone dane, a nie losowo.

To i tak nie ma tego ID na kompie usera.... Chwilka błysnęło mi coś smile.gif

Zakładamy (nie nawidzę tego słowa od pierwszej lekcji matmy w szkole średniej), że zlepiamy ID urządzenia z danych przesłanych np za pomocą tablicy $_SERVER. To wtedy nawet jeśli wywalimy cookie to algorytm może odtworzyć ID z danych przesłanych przez serwer na temat użytkownika RIGHT?questionmark.gif smile.gif
freemp3
Tak, dokładnie o to chodzi. Algorytm powinien brać pod uwagę takie dane, które mogą zidentyfikować jednoznacznie urządzenie (przynajmniej teoretycznie) i utworzyć na ich podstawie klucz. Klucz oczywiście musi dać się utworzyć ponownie na podstawie tych samych danych, więc zero losowości.
-MrSnoop-
freemp3 Dzięki wielkie za pomoc w załapaniu oczywistych rzeczy smile.gif A czy serwer publikuje jeszcze jakieś inne tablice na temat usera oprócz tablicy $_SERVER ? Może w jakiś innych językach można więcej danych ściągnąć, wiecie, więcej danych indywidualnych = lepsza identyfikacja.
freemp3
Tutaj są opisane wszystkie dostępne zmienne w PHP
http://us3.php.net/reserved.variables

Nie wiem czy uda się zrobić taki mechanizm przy pomocy samego PHP. Spróbuj w innych językach np. python, java.
com
freemp3 tylko to co mówisz mija sie troche z celem bo jeśli mozna odtworzyć id to wyjmuje twoje ciacho i preparauje u siebie moje z Twoim id i jestem już urządzeniem zaufanym...
freemp3
Chodzi mi o ID konkretnego urządzenia. Na Twoim urządzeniu to ID nie zadziała, ponieważ na podstawie zebranych z niego danych ID będzie inne. Chodziło mi tylko o przedstawienie ogólnych zasad jak to można zrobić. Pytanie odnosiło się do tego jak można rozpoznawać urządzenia zaufane, więc odpowiedziałem. Odnośnie bezpieczeństwa i szczegółów jakie dane należy pobierać, aby rozpoznać dane urządzenie to już kwestia zaprojektowania odpowiedniego mechanizmu. Raczej wątpię, aby udało się zrobić go w 5 minut podczas dyskusji na forum.
-MrSnoop-
Dokładnie tak, jak napisał freemp3. Ale jeśli zamieszasz dane o użytkowniku z danymi z bazy danych takimi, jak taka rejestracji, IdUsera przy insertowaniu go do bazy wtedy jest to trudniejsze, bo żeby znać wszystkie dane służące do odtworzenia ID ciastka musisz pozyskać dane nie tylko z urządzenia zaufanego, ale także dane z bazy znajdującej się na serwerze, z którą aplikacja uwierzytelniająca się łączy smile.gif

com
nie nie potrzebujesz tych danych bo kopiujesz ciastko 1 do 1 w którym masz już id stworzone, przynajmniej tak to wynikało z wcześniejszych postów... nawet jakby nie to tak czy tak jeśli wyciągnę do Ciebie dane z ciastka i u siebie stworze takie samo to nic Ci ono nie da..

a id nie stworzysz na podstawie danych które mogą się zmienić np nie wykorzystasz w nim ip, przeglądarki itd bo wszystko mogę w każdej chwili zmienić wiec pomysł nie zbyt trafiony, choć nie twierdzę że jakby sie to odpowiednio zaprojektowało to być może udało by się znaleźć takie dane które mogły by posłużyć jako klucz, przykładem jest chociażby szyfrowanie po ssl wink.gif
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.