[php] automatyczne logowanie

0

Witam, chcę zrobić automatyczne logowanie do mojego systemu i chcę to zrobić w taki sposób że po wybraniu opcji zapamiętaj mnie na 14 dni, ustawiam jedno ciastko z zahashowanym id, loginem i typem usera, a drugie z wersja systemu, przeglądarki i po sprawdzeniu tych danych jeśli się zgadzają wpisuję na początku każdej strony dane do sessji i id, loginie i typie usera:

$_SESSION['id'] = '1';
$_SESSION['login'] = 'admin';
$_SESSION['typ'] = '1';

Czy to jest dobre rozwiązanie i w miarę bezpieczne? Mówię w miarę bo z ciastkami nigdy nie jest bezpiecznie ;D

0

Nie przesyłaj raczej loginu i hasła w ciastu

0
nansss napisał(a)

Nie przesyłaj raczej loginu i hasła w ciastu

Hasła nie przesyłam. Id, login i typ. W sumie login też nie muszę. Ale ogólnie o samą koncepcję chodzi czy dobra?

0

Przydało by się do bazy danych przy każdym logowaniu dodawać wartość losową, która jest kiszona w ciastku, by ktoś się nie logował do systemu jako admin samym ciastkiem.

0

z ciastka przesyłaj tylko id sesji i po prostu zadbaj o to żeby sesja na serwerze nie wygasła przez te 14 dni
tak samo bezpieczne jak i sesja trwająca godzinę czy "do zamknięcia przeglądarki"

0

aha, możesz jeszcze porównywać przeglądarkę ale to zbędne utrudnienie
ip nie porównuj bo większość w polsce chyba ma zmienne i tego by nie chciała

i zadbaj żeby po zalogowaniu na tego samego usera z innej sesji, wcześniejsza sesja wygasła (lub nie jeżeli chcesz dopuścić zalogowanie z wielu miejsc na raz)
zrób też żeby po zmianie hasła id sesji się zmienił, bo w twojej wersji nie dość że nie masz możliwości wylogowania kogoś to jeszcze ten ktoś może się logować nawet po zmianie hasła - czyli raz wykradnięte ciastko działa na zawsze

ergo - twój sposób jest zły

0

A co mają zrobić ludzie, którzy mają wyłączone cookies? Nie mogą się nigdzie zalogować. Logowanie powinno nie wymagać cookies, szczególnie że istnieje ryzyko ich nielegalnego odczytu przez kod innej strony jako SQL injection.

0

a w sumie dobrym pomysłem jest zmiana id sesji przy każdej wizycie, wtedy nawet po wykradnięciu ciastka nie będzie się można zalogować jeżeli właściciel w międzyczasie wejdzie na stronie
tylko że ten sposób wyklucza zalogowanie się z wielu miejsc lub z wielu przeglądarek na raz

twój wybór

0
derek z napisał(a)

A co mają zrobić ludzie, którzy mają wyłączone cookies? Nie mogą się nigdzie zalogować. Logowanie powinno nie wymagać cookies, szczególnie że istnieje ryzyko ich nielegalnego odczytu przez kod innej strony jako SQL injection.

zalogować się mogą - id przesyłane przez get
ale jak strona ma ich "zapamiętać" bez cookies? nie da się
tak więc margines pomińmy

0

i jakie znowu SQL Injection :o

0
gfdsgsd napisał(a)
derek z napisał(a)

A co mają zrobić ludzie, którzy mają wyłączone cookies? Nie mogą się nigdzie zalogować. Logowanie powinno nie wymagać cookies, szczególnie że istnieje ryzyko ich nielegalnego odczytu przez kod innej strony jako SQL injection.

zalogować się mogą - id przesyłane przez get
ale jak strona ma ich "zapamiętać" bez cookies? nie da się
tak więc margines pomińmy

Bez cookies nie mogę się prawie nigdzie zalogować jak na przykład do gmail. Poza tym banki jak inteligo.pl nie używają cookies, czyli można sobie dać radę bez nich. Jeśli nie ma cookies to synchronizacja między serwerem i klientem jest robiona przez identyfikator sesji w adresie strony i dodatkowo ten identyfikator można ukryć żeby było ładniej.

0

Rozmawiamy o automatycznym logowaniu, identyfikatora sesji nie przechowasz nigdzie indziej niż w cookies.

0

Czyli jak najprościej i w miarę bezpiecznie zrobić to automatyczne logowanie? przeglądarkę trzeba porównać z tą co np zapisałem w ciastku. A dalej?

0

Generujesz sobie numerek sesji, wstawiasz ten numerek, skrót hasła, user agent delikwenta (jeśli tak bardzo chcesz) i datę wygaśnięcia autologinu. Numerek sesji wysyłasz ciastkiem, a potem przy wejściu na stronę sprawdzasz czy ciastko jest, jeśli tak to pobierasz z bazy rekord o tym i sprawdzasz czy się nie przeterminowało, czy hasło dalej jest takie samo i user agent jest prawidłowy, jeśli coś jest nie tak to niszczysz ciastko (ustawiasz datę w przeszłości i zostanie zniszczone).

1 użytkowników online, w tym zalogowanych: 0, gości: 1