Я немного прочитал, как защитить сеанс, и я решил сделать это, чтобы сохранить session_id в базе данных, а затем сохранить его в переменной сеанса после того, как он был зашифрован.
Вот класс, который я использовал для шифрования (он был написан автором книг Ориэля):
Зашифрованный класс с помощью session_set_save_handler
Я применяю его так:
ini_set('session.use_only_cookies',true); //calls the session class. require_once(dirname(__file__)."/../../Administrator/secure_session.php"); session_start(); if( !isset($_SESSION['mod']) ) { Moderator::insert_moderator($name,session_id()); $_SESSION['mod']= session_id(); $_SESSION['time']=time(); echo "<br/>Moderator session: ".$_SESSION['mod']; }
Это исключение:
Неустранимая ошибка: исключить исключение «Исключение» с сообщением «Я не могу создать безопасный псевдослучайный ключ. Пожалуйста, используйте PHP> = 5.3 или Mcrypt extension 'в C: \ xampp \ htdocs \ PolitForum \ Administrator \ secure_session.php: 74 Трассировка стека: # 0 C: \ xampp \ htdocs \ Политический форум \ Администратор \ secure_session.php (107): SecureSession -> _ randomKey (32) # 1 [внутренняя функция]: SecureSession-> open ('C: \ xampp \ htdocs …', 'PHPSESSID') # 2 C: \ xampp \ htdocs \ PoliticalForum \ StoredProcedure \ User \ headerSite.php (43): session_start () # 3 C: \ xampp \ htdocs \ Политический форум \ mainHome.php (14): include_once ('C: \ xampp \ htdocs …') # 4 {main}, брошенный в C : \ xampp \ htdocs \ Политический форум \ Администратор \ secure_session.php в строке 74
Что я делаю неправильно, как я могу это исправить, потому что я не понимаю много шифрования!
Исключение составляет то, что вы, вероятно, используете PHP <5.3, или вы не указали расширение mcrypt в php.ini
В вашем журнале ошибок говорится строка 74 класса, если вы посмотрите на нее:
(71) if (defined(MCRYPT_DEV_URANDOM)) { (72) return mcrypt_create_iv($length, MCRYPT_DEV_URANDOM); (73) } else { (74) throw new Exception("I cannot generate a secure pseudo-random key. Please use PHP >= 5.3 or Mcrypt extension"); (75) }
это означает, что MCRYPT_DEV_URANDOM не определен, и если вы посмотрите в php.net, вы увидите, что он был введен в PHP> = 5.3 на платформах Widnows
Чтобы обновить версию PHP, загрузите последнюю стабильную версию здесь или здесь (Windows)
Если вы получите это сообщение, у вас есть PHP 5.3
или новее. Вы не включили расширение OpenSSL
в файле php.ini
.
Вам нужно сделать следующую строку в файле php.ini
:
extension=php_openssl.dll
Я предполагаю, что вы используете окна, другие разумно меняют расширение