Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для First Stage
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 10

Делаю авторизацию на основе сессий! Нужен совет Профессионалов

02.03.2017, 23:47. Показов 810. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю админку, сейчас разбираюсь с сессиями.
Немного непонятен этот механизм я новичок
Хочу обезопасить свою сессию.
Прошу помочь ... так сказать, нужен совет со стороны?

Правильно-ли я защищаю свой идентификатор?

Есть форма авторизации:
form.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
<form class="form"  method="post" action="./test.php">
    <label>Username:</label>
    </br>
    <input type="text" name="user" /><br />
    </br>
    <label>Password:</label> 
    </br>
    <input type="text" name="pass" /><br />
    </br>
    <input type="submit" name="submit" value="Войти" />
</form>

Далее проверяем введенные данные

test.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
session_start();
include('config.php');
//если существуют логин и пароль
$userDB=$_POST['user'];
$passDB=$_POST['pass']; 
if(isset($userDB) AND isset($passDB))
{
//Делаем соответствующую проверку
//Шифруем пароль
$passDB = md5($passDB);
 
//Делаем запрос к БД
$result = mysql_query("SELECT name,pass FROM users);
$myrow = mysql_fetch_array($result);
//Делаем проверку 
 if($passDB == $myrow[pass])//если введенная информация совпадает с информацией из БД
                {
                    //стартуем сессию
                    session_start();
                    //создаем глобальную переменную
 
                    $_SESSION["authSESS"] = [
                                    'authPASS' => $myrow[pass],
                                    'vizitbrowser' => md5('SECRETPREFIX' .$_SERVER['HTTP_USER_AGENT']),
                                'timeauth'=> time()
                    ];
                    header("location: index.php");//переносим на главную страницу
                    exit;               
                }
                else
                {
                    header("location: form.html");//переносим на форму авторизации
                    exit;               
                }
 
}
Главная страница АДМИНКИ

index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
session_start();
include('config.php');
//выводим из базы данных логин и пароль
$result = mysql_query("SELECT name,pass FROM users);
$myrow = mysql_fetch_array($result);
 
$vizit_BR=md5('SECRETPREFIX' . $_SERVER['HTTP_USER_AGENT']);
 
//проверяю сессию по паролю
//проверяю по отпечатку браузера
//проверяю время жизни идентификатора сессии
if ( $_SESSION["authSESS"]['authPASS'] != $myrow || $_SESSION["authSESS"]['vizitbrowser'] !=$vizit_BR || (time() - $_SESSION['authSESS']['timeauth'] > 1800))
{
        session_unset();
        session_destroy();     
        header("location: form.html");//переносим на форму авторизации
        exit; 
}else {
    
        echo "Тут пишем саму админку";   
 
}
Вся суть здесь в файле index.php. Правильно-ли я мыслю?
Буду рад любой подсказки так как ваши советы мне очень помогают в развитии. Заранее всем спасибо!
Надеюсь на вашу помощь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.03.2017, 23:47
Ответы с готовыми решениями:

Нужен совет профессионалов
Вот такой сайт: http://divelang.ru/ Это школа иностранных языков. ключевые слова язык, языка и т.п. и курсы, курсов ... Делали...

нужен совет профессионалов
Добрый день всем. Нужен ваш профессиональный совет. Имеется: процессор: intel Core i7-3970 extreme (сокет 2011) материнка: ASUS P9X79...

Нужен совет профессионалов
Здрасссте! Случайно зашла на ваш форум, полазила по нему. Ниче не поняла конечно:) У меня вот такая вещь: есть сайт фирмы моей семьи. Она...

4
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
03.03.2017, 11:51
Цитата Сообщение от First Stage Посмотреть сообщение
Правильно-ли я защищаю свой идентификатор?
Где ты защищаешь идентификатор?
Цитата Сообщение от First Stage Посмотреть сообщение
Правильно-ли я мыслю?
Что за фигня с браузером?
PHP
1
'vizitbrowser' => md5('SECRETPREFIX' .$_SERVER['HTTP_USER_AGENT']),
Зачем это? Он никогда не будет отличаться, получается лишняя проверка.

Добавлено через 1 минуту
А пароль сравнивать постоянно зачем, если вдруг его сменят?

Добавлено через 1 минуту
П.С. Ну и базовые конструкции языка надо знать
PHP
1
if(isset($userDB) AND isset($passDB))
PHP
1
if(isset($userDB , $passDB))
0
03.03.2017, 12:48

Не по теме:

Цитата Сообщение от crautcher Посмотреть сообщение
Он никогда не будет отличаться, получается лишняя проверка.
Почему? Например, у Вас украли cookie и делают запрос на сайт. Если они укажут неверный User-Agent -- не смогут получить доступ.
Только заместо User-Agent лучше указывать IP.

0
 Аватар для First Stage
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 10
03.03.2017, 18:24  [ТС]
Цитата Сообщение от crautcher Посмотреть сообщение
Где ты защищаешь идентификатор?
Понятно что идентификатор сессии нельзя защитить на 100% от различного рода атак я собираюсь сосредоточиться на том,чтобы сделать эти атаки менее проблематичными,
то есть усложнить процесс перехвата идентификатора, поскольку каждое осложнение повышает уровень безопасности.
Как-никак, атакующий должен лишь предоставить тот же уникальный идентификатор, что и авторизированный пользователь, для того, чтобы выдать себя за этого пользователя и подделать сессию.
Таким образом, представляется, что единственная защита — либо скрывать идентификатор сессии, либо делать его трудным для угадывания.
Основная идея это привязать идентификатор сессии к браузеру пользователя.
Цитата Сообщение от crautcher Посмотреть сообщение
Что за фигня с браузером?
Я убеждён, что идентификатор сессии не может быть угадан, но есть возможность, что он может быть выведен злоумышленником.
В момент старта сессии данное значение (отпечаток браузера) вычесляется и сохраняется в переменной сессии
Так как данные эти берутся от клиента, доверять им вслепую нельзя, формат MD5-хэша независим от входных данных.

Получить правильный идентификатор сессии.
Предоставить при атаке такой же заголовок User-Agent.
Если добавить некий дополнительный секретный префикс, то "отпечаток браузера" становится практически невозможно угадать.

Теперь, когда мы добавили проверку браузера пользователя, атакующий должен осуществить два шага для того, чтобы подделать сессию:

PHP
1
2
3
4
5
$_SESSION["authSESS"] = [
        ****,
        'vizitbrowser' => md5('SECRETPREFIX' .$_SERVER['HTTP_USER_AGENT']),
        ****
        ]
При повторном обращении мы снова вычесляем подпись браузера и снова сравниваем полученный результат со значением из сессии.
Если значение не совпадают то мы расцениваем это как попытку взлома и уничтожаем сессию. надо будет заново залогиниться.

Так же для защиты индентификатора я меняю параметры конфигурации INI-настроек связанных с сессиями. (Здесь я их просто не указал)
Цитата Сообщение от crautcher Посмотреть сообщение
А пароль сравнивать постоянно зачем, если вдруг его сменят?
Я проверяю сессию по паролю который хранится на стороне сервера в БД.
Если значение сессии не равняется этому значению, значит сессии не существует.
Если даже и подслушают сессию и вытащят это значение то оно будет захэшированно понятно что md5 уже не потходит (взял вкачестве примера)!
Этот пароль может сменить только аворизированый пользователь в Admin-панели который прошел аутентификацию

Возможно это и глупо я не отрицаю вот я и спрашиваю у професионалов подсказки либо какой нибудь интересной мысли кто уже с этим работал и сталкивался так как я еще зеленый в этом вопросе!
Чтобы сделать свой механизм более безопасным!
Цитата Сообщение от crautcher Посмотреть сообщение
П.С. Ну и базовые конструкции языка надо знать
За это спасибо учту, но я акцентирвал внимание на сессиях это файл index.php. Остальное это просто как дополнение к этому


Пожалуйста разъясни свои ответы поподробнее
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
07.03.2017, 16:39
Цитата Сообщение от Para bellum Посмотреть сообщение
Например, у Вас украли cookie и делают запрос на сайт.
Каким образом? Имеют доступ к моему компьютеру? Что тогда помешать юзер-агента получить и его подставить? Тогда ничто не поможет.

Добавлено через 5 минут
Цитата Сообщение от First Stage Посмотреть сообщение
но есть возможность, что он может быть выведен злоумышленником
Если у злоумышленниак есть возможность получить куки, то у него есть и возможность получить юзер-агента
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2017, 16:39
Помогаю со студенческими работами здесь

Нужен совет от профессионалов по созданию БД
Всем доброго времени суток. В общем есть такая задача: Нужно написать приложение, с помощью которого можно заносить данные в БД, а затем по...

Отказы в рекламе, нужен совет профессионалов.
Есть ресурс - www.hb2.ru Везде где обращался по рекламе - отказывают. Но ведь теже секции бокса, и какой либо другой борьбы...

Удаленный способ к моим компам, очень необычно, нужен совет профессионалов
Добрый день. Сразу оговорюсь, что я обычный пользователь, и по уровню знаний IT 2-3 балла из 10. Мне нужна помощь и совет...

Перестал работать жесткий диск. прогнал стандартным чекдиском. нужен совет профессионалов, что делать дальше?
жесткий диск система видит, но не открывает, предлагает отформатировать. прилагаю скрины чекдиска и СМАРТа что делать дальше?...

Научите получше разобраться в формах.нужен совет профессионалов или хорошо понимающих в этом.подр внутри
знаю основы типа CanSelect, CanFocus, Checked, Show, Clear ну Вы поняли только основы с кнопками и т.п элементарным.и ветвления с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru