![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Tak zastanawiam się czy takie coś jest wystarczającym zabezpieczeniem:
login.php - pobieranie danych z bazy, sprawdzanie czy zgadzają sie z formularzem, i jeżeli tak to zapisujemy sesje z nazwą usera i jego ID. konto.php - sprawdzanie czy istnieje rekord z takimi danymi, i jeżeli tak to pozwalamy oglądać stronę oraz sprawdzanie czy sesja nie jest starsza niż 7200 sekund. Wymyśliłem sobie zapisywanie w sesji IP uzytkownika i jeżeli sie zmieni to wywalamy go. Czy takie coś jest wystarczająco bezpieczne? Jakie są Wasze propozycje? Bo to wszystko zależy od bezpieczeństwa sesji. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
a to jest mój kod sesji ;-)
w bazie: [sql:1:1af65327e7] CREATE TABLE `session` ( `session_id` varchar(50) NOT NULL default '', `endtime` int(11) NOT NULL default '0', `vars` longtext, PRIMARY KEY (`session_id`) ) TYPE=MyISAM;[/sql:1:1af65327e7] [php:1:1af65327e7]<?php class Session { function Session() { global $db; $db->Execute("DELETE FROM `session` WHERE `endtime`<'".time()."'"); $this->sid; } function Start() { global $db; if(!isset($_COOKIE['CMS'])) { $sid = md5(getenv("REMOTE_ADDR").time()); $this->sid = $sid; $time = time() + 3600; $sql = "INSERT INTO `session` VALUES('{$this->sid}','{$time}',NULL,NULL)"; $db->Execute($sql); setcookie("CMS",$this->sid,time()+3600); } else { $this->$sid = $_COOKIE['CMS']; } } function Destroy() { global $db, $_COOKIE; $sid = $_COOKIE['CMS']; setcookie("CMS",1,time()-3600); $db->Execute("DELETE FROM `session` WHERE `session_id`='{$sid}'"); } function SaveVar($varname,$varvalue) { global $db; $result = $db->Execute("SELECT `vars` FROM `session` WHERE `session_id`='{$this->sid}'"); while(!$result->EOF) { $vars = unserialize($result->fields['vars']); } $vars[$varname] = $varvalue; $save = serialize($vars); $db->Execute("UPDATE `session` SET `vars`='{$save}' WHERE `session_id`='{$this->sid}'"); } function GetVar($varname) { global $db; $result = $db->Execute("SELECT `vars` FROM `session` WHERE `session_id`='{$this->sid}'"); while(!$result->EOF) { $vars = unserialize($result->fields['vars']); } return $vars[$varname]; } } ?>[/php:1:1af65327e7] Nie ma mechanizmu usuwania zmiennych, ale stwierdziłem, że jest on niepotrzebny. Kod prosty, uniwersalny (oparty o AdoDB). Inicjalizacja. [php:1:1af65327e7]<?php include("./session.class.php"); $Session = new Session; $Session->Start(); ?>[/php:1:1af65327e7] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 15:03 |