Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Logowanie
spenalzo
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
seaquest
post
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]
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: 3.10.2025 - 15:03