![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
Witam
Stworzyłem prymitywny system logowania opartego na razie tylko o sesje (bez tabel i cookies). Działa ona tak: na początku każdego pliku który wyświetla stronę (np index.php, news.php, artykul.php) mam funkcje session_start() Potem jest logowanie. Ściąga dane z formularza (login i hasło), potem jest zapytanie SQL, jeśli znajdzie takiego usera w bazie to ustawia zmienne sesyjne:
Przy wylogowywaniu jest robione session_destroy() Czy takie coś jest bezpieczne? Chyba nie. Można przecież jakoś ukraść sesje. Jak byście wy napisali sprawniejszy (i co ważniejsze) BEZPIECZNIEJSZY system sesji. Z góry dziękuje na pomoc, naprawdę mi zależy na tym Pozdrawiam. Ten post edytował Avatarus 5.02.2008, 12:33:16 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Cytat Kolumna "ilosc blednych logowań" eliminuje chyba wszystkie próby ataku typu brute force. i przy okazji daje możliwość zablokowanie konta użytkownika, np. gdy chcemy mu zrobić na złość ;-) co do dalszej części postu, session_regenerate_id przy każdym żądaniu to całkiem dobre rozwiązanie, ale może być zbyt obciążające przy większej liczbie użytkowników (zresztą często większe bezpieczeństwo osiągamy kosztem wydajności, niestety). w sumie możesz znależć złoty środek odtwarzając id co kilka żądań (ale zawsze to rób przy zmiane uprawnień na wyższe) i koniecznie zwróć uwagę na parametr TRUE funkcji session_regenerate_id, w przeciwnym razie regeneracji na nic się nie zda. możesz także razem z parametrami przwchowywać hasha (z jakimś saltem) liczonego ze wszystkich wartości, to wtedy nawet jak ktoś się dobierze do plików sesyjnych, będzie miał dodatkową przeszkodę. można też szyfrować dane w pliku np. używając mcrypt. jednak zawsze musisz się zastanowić czy potrzebujesz aż taki poziom bezpieczeństwa. tak naprawdę nie ma stałych ścisłych reguł, więc nie wpadaj w pułapkę próby stworzenia jednego uniwerslanego rozwiązania problemu. zawsze to zależy od aplikacji, nad którą właśnie pracujesz. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 03:23 |