Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Logowanie, wylogowywanie, trzymanie sesji
matiit
post
Post #1





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

Ostrzeżenie: (0%)
-----


W celach naukowych piszę sobie CMS'a.
Mam tam między innymi panel admina. Logowanie przebiega tak:
Na początku każdej strony jest session_start();
Logowanie: plik login.php dostaje od formularza postem login i haslo, login i hash hasła są sprawdzane w bazie danych, jeśli wszystko się zgadza tworzę $_SESSION['logged'] = 'yes';
I strona może wyświetlać 2 widoki - dla użytkownika zalogowanego i dla użytkownika niezalogowanego. Warunek zalogowania? Czy istnieje zmienna $_SESSION['logged'] i czy jest ustawiona na yes. Jeśli tak wyswietla się content dla zalogowanych, jeśli nie - wyświetla się content dla niezalgowanych, np. loginform.
Wylogowanie:
W skrócie:
  1. unset($_SESSION['logged']);

I pojawiają się 2 pytania... Czy jest to bezpieczne? Czy ktoś nie może sobie utworzyć zmiennej sesyjnej takiej jak podana i sie po prostu wbić?
Gdzie przechowywać takie dane jak id zalogowanego usera? Przydatne przy np. zmianie hasła.

Ten post edytował matiit 11.01.2010, 22:34:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1.  
  2. if (isset($_SESSION['agent'])) {
  3. if ($_SESSION['agent'] <> $_SERVER['HTTP_USER_AGENT']) {
  4.  
  5. // tutaj wylogowanie, nastąpiła zmiana nagłówka
  6. // i ewentualne przekierowanie do strony z logowaniem
  7.  
  8.  
  9. }
  10. } else {
  11. $_SESSION['agent'] = $_SERVER['HTTP_USER_AGENT'];
  12. }
  13.  
  14. // dalsza zawartość strony

W zmiennej sesyjnej $_SESSION['agent'] zapisujesz nazwę przeglądarki użytkownika, której użytkownik zwykle nie zmienia w czasie trwania sesji. Natomiast bardzo prawdopodobne jest, że osoba atakująca (przechwytująca sesję) będzie miała inny nagłówek HTTP_USER_AGENT.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 22:08