Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bezpieczny system logowania
Displace
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 24.07.2010

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


Witam,

Próbuję od jakiegoś czasu napisać skrypt logowania, ale tak, aby był jak najbardziej bezpieczny. Jakiekolwiek włamanie na konto użytkownika jest w moim przypadku niedopuszczalne. W internecie dużo jest "poradników" czy też "kursów" na ten temat. A pisząc poradniki, jeszcze w cudzysłowu mam na myśli to, że w 95% przypadków jest to zwykły system oparty na sesjach, bez jakichkolwiek zabezpieczeń. W większości przypadków nie jest to też to, czego szukam.

Docelowo muszę napisać system logowania z możliwością zapamiętania użytkownika na danym komputerze - jedynym słusznym rozwiązaniem jest użycie sesji i cookies.

I teraz jak to ugryźć?
1) Czy wystarczy samo session_regenerate_id(), czy coś jeszcze można by było dorzucić do kodu?
2) Czy warto stworzyć osobną tabelę w bazie danych specjalnie dla sesji? Jeśli tak, to na jakiej zasadzie by to działało i jakie pola powinny się w niej znaleźć? Dla przykładu, oto tabele z phpBB3, niestety nie wiem w jaki sposób rozwiązano tam ten problem, gdyż cały kod tegoż forum jest za długi i nie da się go jednocześnie przeczytać i zrozumieć.
  1. CREATE TABLE `sessions` (
  2. `session_id` varchar(32) BINARY NOT NULL DEFAULT '',
  3. `session_user_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  4. `session_forum_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  5. `session_last_visit` int(11) UNSIGNED NOT NULL DEFAULT '0',
  6. `session_start` int(11) UNSIGNED NOT NULL DEFAULT '0',
  7. `session_time` int(11) UNSIGNED NOT NULL DEFAULT '0',
  8. `session_ip` varchar(40) BINARY NOT NULL DEFAULT '',
  9. `session_browser` varchar(150) BINARY NOT NULL DEFAULT '',
  10. `session_forwarded_for` varchar(255) BINARY NOT NULL DEFAULT '',
  11. `session_page` blob NOT NULL,
  12. `session_viewonline` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  13. `session_autologin` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  14. `session_admin` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  15. PRIMARY KEY (`session_id`),
  16. KEY `session_time` (`session_time`),
  17. KEY `session_user_id` (`session_user_id`),
  18. KEY `session_fid` (`session_forum_id`)
  19. ) TYPE=MyISAM;
  20.  
  21. CREATE TABLE `sessions_keys` (
  22. `key_id` varchar(32) BINARY NOT NULL DEFAULT '',
  23. `user_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  24. `last_ip` varchar(40) BINARY NOT NULL DEFAULT '',
  25. `last_login` int(11) UNSIGNED NOT NULL DEFAULT '0',
  26. PRIMARY KEY (`key_id`,`user_id`),
  27. KEY `last_login` (`last_login`)
  28. ) TYPE=MyISAM;

3) W jaki sposób rozwiązać problem z zapamiętaniem użytkownika, co wysyłać w ciastkach aby było w miarę bezpiecznie?


Nie przyjmuję gotowców! (choć chyba i tak nikt mi go dawać nie zamierzał winksmiley.jpg) Proszę tylko o jasne nakreślenie mi tego w jaki sposób mógłbym to napisać, aby było w miarę prosto, ale i bezpiecznie. Zaznaczam również, że lubię czytać i chętnie przyjmę posty dłuższe niż 3 zdania.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 20.08.2025 - 23:23