Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zapamietaj mnie
Forum PHP.pl > Forum > Przedszkole
neo1986kk
Witam chciałbym na swojej stronce zrobić właśnie taką opcje.

I tu mam kilka pytań:

1. Jak to zrobić? Czy tutaj już w grę wchodzą ciasteczka (jeszcze nigdy ich nie używałem)
2. Czy to jest bezpieczne?
pedro84
1. Ciasteczko
2. Raczej tak.
thek
To tak zwana "długa sesja", która zamiast trwać do momentu opuszczenia strony jest zapamiętywana na określony czas.
A co do bezpieczeństwa, to pamiętaj o jednej podstawowej rzeczy: "Wszystko, co nie zmienia sie przez długi czas jest łatwiejsze do odnalezienia lub daje większą szansę na przechwycenie tego". Łopatologicznie ujmując. Jeśli masz stałą sesję przez długi czas, to istnieje większa szansa na to, że ktoś się do niej dobierze i podszyje pod Ciebie. Istnieje regeneracja sesji jako pewne remedium na ten problem. tutaj zapoznaj się z tematem sesji i ataków choćby typu session hijacking czy session fixating, bo to z nimi będziesz musiał w takiej sytuacji stanąć oko w oko.
neo1986kk
Trochę nie rozumiem tego artykułu, że sesje można przekazywać w url albo w ciasteczku. No ale ja mam do logowania użyte sesje i przecież nigdzie ich nie przekazuję tylko sprawdzam czy sesja istnieje.

Chociaż pewnie się mylę. Ale session_start() to myślalem ze on sprawdza czy jest taka sesja. Chociaz w sumie powinna być ona gdzieś zapisana:/ nie wiem
jeśli ktoś może mi to wytłumaczyć to będę wdzięczny.
wookieb
To może poznaj teorię działania sesji co? Bo póki co narazie nie mamy o czym rozmawiać.
marcio
Sesje na srv wspoldzielonych sa zapisywane w tymaczasowym katalogu /tmp/ na dedykach/vps miejsce ich zapisywania mozesz zmienic.

Jak chcesz zrobic opcje zapamietaj mnie to kodus haslo w ciasteczku jakis szyfrem ktory mozna tez rozkodowac wtedy obronisz sie przed script kiddie, lecz ktos bardziej spostrzegawczy zobaczy ze bedzie to base64/rot13 lub inne znane szyfry.
neo1986kk
Może inaczej. Wiem co to są sesje i po co są. Mam wykupiony serwer hostingowy i proste logowanie.
  1. if(isset($_POST['login']) && isset($_POST['password']))
  2. {
  3. // jeżeli użytkownik właśnie podjął próbę zalogowania
  4. $iduzytkownika = $_POST['login'];
  5. $haslo = $_POST['password'];
  6.  
  7.  
  8. $bd_lacz = new mysqli('host, 'nazwa', 'haslo', 'baza');
  9.  
  10. if (mysqli_connect_errno()) {
  11. echo 'Połączenie z bazą danych nie powiodło się: '.mysqli_connect_error();
  12. exit();
  13. }
  14.  
  15. $zapytanie = 'select * from logowanie '
  16. ."where login='$iduzytkownika' "
  17. ." and haslo='$haslo' ";
  18.  
  19. $wynik = $bd_lacz->query($zapytanie);
  20. if($wynik->num_rows > 0)
  21. {
  22. // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
  23. $_SESSION['prawid_uzyt'] = $iduzytkownika;
  24. }
  25. $bd_lacz->close();
  26. }


później na każdej stronie mam na górze session_start() i if jeśli jest sesja to kod dla zalogowanych else dla niezalogowanych i to wszystko.

Dlatego teraz mam pytanie po przeczytaniu artykułu, co to znaczy ze sesje sa przekazywane url, bo nie moge tego zrozumieć.

Czy ja to powinienem jakoś zabezpieczyć?

Na swoim serwerze nia mam folderu /tmp.
wookieb
No to nadal nie wiesz o czym mówimy. IDENTYFIKATOR SESJI jest przekazywany.
Najprostszym sposobem stworzenia opcji zapamietania jest ustawienie baaardzo długiego czasu życia ciasteczka wlasnie z Identyfikatorem sesji.
neo1986kk
wiem o czym mowimy bo sam ten temat założyłem.

Ale poprostu przy okazji czytania artykułu o sesjach doszedłem do wniosku ze moge mieć źle zabezpieczony skrypt.

Rozumiem ze musze zrobić długie sesje żeby mieć opcje zapamiętaj mnie i to jest jasne już dla mnie. Ale teraz juz nie chce zakladać osobnego tematu tylko tu chce uzyskać pomoc na temat mojego zabezpieczenia.

Pokazałem swój skrypt i powiedzialem ze mam to na hostingu, (nazwa.pl) w oczekiwaniu, że ktoś mi odpowie czy to jest dobrze zabezpieczone czy nie.

W jaki sposób przekazuje sesję?

Poprostu nie rozumiem tego.

A co do dlugości sesji to teraz muszę do tego swojego kodu dodać żeby on zapisywał się w ciasteczku? Sesja znika odrazu po opuszczeniu przeglądarki.
marcio
Nie wiem jak sprawdzasz czy user jest zalogowany, ale wydaje mi sie ze robisz cos takiego:
  1. if(isset($_SESSION['prawid_uzyt'])) {
  2.  
  3. //tresc dla zalogowanych
  4.  
  5. }
  6.  
  7. else {
  8.  
  9. //tresc dla nie zalogowanych
  10.  
  11. }

Jesli robisz tak wydaje mi sie ze jesli ja sie zaloguje na moje konto bede znal twoje id/login i zmienie zawartosc sesji ti zaloguje mnie na twoje konto.

Poniewaz nie masz zadnego hash'u ani nic co by ci blokowalo taka operacje.
thek
A więc zobacz na kolorowanie. Wcięło Ci przy połączeniu ' przy zmiennej hosta to raz. Dwa, że kompletnie nie zadbałeś o filtrowanie zmiennej. Jeśli mechanizm filtracji dla mysqli nie przewiduje w metodzie query filtrowania (a tak jest z tego co kojarzę) to masz niemal gratisowy atak typu SQL Injection na własne życzenie. Poczytaj tutejsze tematy na forum o tym. jest nawet jeden przyklejony.

Co do długości sesji to popatrz choćby na http://www.php.net/manual/en/function.sess...okie-params.php a to Ci nieco powinno żarówkę zaświecić winksmiley.jpg
neo1986kk
marcio a umiesz to sprawdzić?

thek ale ja sprawdzałem sqlinjection i chyba nazwa.pl sama to zabezbiecza. Ale jeśli możesz to sprawdzić jakoś to podam Ci stronke.
thek
Znając życie jest włączone magic quotes. Przeniesiesz serwis gdzie tego nie będzie i Ci się kod sypnie. Pisz od razu poprawnie i nie licz na dyrektywę, która od wersji 5.3 jest przestarzała a w 6.0 albo wyłączona albo usunięta całkowicie (nie pamiętam teraz które z dwojga).
neo1986kk
ok dziękuje za radę.

Myślę że tu akurat chodzi Ci o addslasches. To jeszcze jakoś zrobie. Najgorzej będzie mi z tymi sesjami pewnie, ale moze jakoś dam radę.
thek
Nie funkcję, a dyrektywę smile.gif Magic_quotes w działaniu przypomina addslashes. Coś jak ta funkcja działająca automatycznie dla każdej tablicy i zmiennej w skrypcie. Nie zawsze jest to działanie pożądane i przez to potrafi napsuć krwi. To programista powinien decydować co kiedy użyć, nie interpreter języka odgórnie. Poczytaj nieco o magic_quotes a być może przyznasz mi rację.
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.