http://www.example.org/index.php?PHPSESSID=n2cnj59d7s3p30fjs0jfn28nfВ отличии от сессии через cookie, когда информация скрывается в HTTP-заголовке, ID передается открытым. Чтобы защитить от этого, необходимо запретить передачу идентификатора php сессии посредством адресной строки. В файле конфигурации Apache-сервера .htacess прописываем следующее:
php_flag session.use_only_cookies on
if ($_SESSION['password'] == $userpass) { // код }Указанный выше код не очень безопасен, так как его пароль хранится как обычный текст в переменной php сессии. Используйте лучше вместо этого md5-шифрование:
if ($_SESSION['md5password'] == md5($userpass)) { // код }
< ?php session_start(); if (isset($_SESSION['HTTP_USER_AGENT'])) { if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) { // код } } else { $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']); } ?>
< ?php include ("ip_list.php"); $ip_white_list = array ( 'admin1' => '111.222.333.444', 'admin2' => '555.666.777.888'); if(!empty(array_search($_SERVER['REMOTE_ADDR'],$ip_white_list))) { header("Location: admin.php"); } else { echo 'ACCESS DENY!'; } ?>либо по IP-адресу для каждого конкретного запроса исключительно для статичных IP:
< ?php if(isset($_SESSION['ip']) and $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) { header("Location: admin.php"); } else { session_unset(); $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; } ?>
# Время жизни сессии в секундах php_value session.gc_maxlifetime 3600 # Время жизни cookie в секундах php_value session.cookie_lifetime 3600Помните, что гарантированно предотвратить возможность взлома невозможно. Создать препятствия для злоумышленников различными способами - возможно. При этом не забывайте обычных пользователей и не усложняйте им доступ. Все хорошо в меру, как говорится.