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Помните, что гарантированно предотвратить возможность взлома невозможно. Создать препятствия для злоумышленников различными способами - возможно. При этом не забывайте обычных пользователей и не усложняйте им доступ. Все хорошо в меру, как говорится.