#
#$#$ Режимы безопасности
#
Режимы безопасности
{$xbacklinks}
Что такое режимы безопасности и их одщая политика (для посетилеей)
описана на странице о безопасности чата.
Имеются следующие опции и алгоритмы для поддержания безопасности.
- quick - Временное сохранение пароля для быстрого входа.
Если включено, то человек может выйти из чата, а потом сразу войти, не вводя пароля.
Это будет продолжатся не менее 30 минут - время жизни сессии. Возможно,
дольше. Сессия сотрется (и пропадет возможность войти без пароля)
либо если закрыть на 1 минуту все окна браузера и не открыть это время,
либо если нажать ВЫХОД на главной странице.
1 минута - это время жизни сессии, когда закрываются все окна.
Чтобы изменить время и, допустим, уничтожать сессию сразу (мгновенно) при закрытии
всех окон браузера, ознакомьтесь с опцией $mysesstime в __dima.php.
- nick - Сохранение не секретной информации
в куках браузера (ник, цвет, скин).
- ip - Жесткая проверка IP-адреса (точное совпадаение).
Есть два очень важных и удобных в использовании принципа проверки адресов:
- Если вдруг меняется IP адрес и опция ipcookie не установлена, то
доступ к чату запрещается. Но сессия не блокируется и если IP-адрес
вернется в старое значение, то работа продолжится.
- Если вдруг меняется IP адрес, но установлена опция ipcookie,
браузер передает серверу секретную куку (PR1) или передает
серверу секретный ключ HTTP-авторизации (PR3), ТО: сервер записывает
в лог, что пользователь сменил IP-адрес и позволяет продолжить работу,
записав новый адрес в сессию пользователя.
Таким образом, пользоваться жесткой проверкой нужно, полезно и УДОБНО!
Чат не заблокирует доступ, т.к. браузер будет передавать ему секретные
ключи, благодаря которым новый IP-адрес будет принят как надежный.
- ipnet - Тоже самое, что и ip.
Только здесь проверяется не строгое равенство, а маска домена или IP-подсети:
***.domain.net или XXX.XXX.XX*.***.
Одновременно можно использоваться либо ip, либо ipnet
(либо обоих отключить).
Так же как и опция выше браузер может сменить IP совершенно произвольно,
но только если он передает секретную куку (PR1) или ключ HTTP-авторизации (PR3).
Если адрес меняется слишком сильно (вне сети) и ключей не передано, то
доступ запрещается.
- ipcookie -
Смысл этой опции уже описан выше... Опция позволяет при установленных
ip или ipnet все же позволять браузерам прозрачно
и автоматически менять IP-адреса на любые другие. Пользователь может
хоть на каждый запрос менять свой адрес, а данная опция будет тихо
и незаметно для пользователя устраивать проверку. Многие люди знают печальные последствия
ограничейни доступа к сайтам по IP-адресам пользователям, кроме
геммороя такая защита ничего не дает. В чате же вы смело можете
жестко контролировать адреса, но тем не менее, с помощью этой опции,
допускать безопасное изменение. Или не допускать, если отключить.
- br - Проверка названия/версии браузера и ОС.
Если изменяется - сессия уничтожается. Пользователю пишут, что
его параметры, которые недолжны никогда меняться (за исключением
установки новых версий программ на компьютер) и такое изменение
очень подозрительно. У пользователя есть только одна возможность -
клинкуть линк входа на чат как совершенно новый посетилель.
- screen - Проверка разрешения и кол-ва цветов монитора (*)
Если изменяется - сессия уничтожается.
Это весьма жестоко, но менять размеров экране не стоит.
Есть побочный эффект. Если играть в графические игры, постоянно меняющие
размер экрана на свой (игровой) и параллельно входить в чат,
то можно ошибочно получить такую блокировку.
- computer - Проверка уникального идентификатора компьютера (ComputerID) (*)
Если изменяется - сессия уничтожается.
У всех компьютеров этот идентификатор разный, основан на версиях некоторых
установленных программ.
- zone - Проверка часового пояса (*)
Если изменяется - сессия уничтожается.
- protect - Проверка защищенной куки PR1 (*)
Если изменяется - сессия блокируется: пользователю пишут, что произлошло
и дают на выбор 3 варианта - обновить страницу (вдруг, придет ожидаемая сервером
кука с ключем PR1), либо войти как новый пользователь,
либо ввести в поле свой пароль. Если пароль верен, это разблокирует сессию и
можно будеть продолжить работу. В отличии от немедленного уничтожения,
здесь сессия лишь блокируется и дается шанс пользователю снять блокировку, не
вылетая из чата на его начало.
- httppass - Проверка ключа HTTP-авторизации (PR3).
По другому это можно назвать HTTPkey или HTTP-паролем.
Если изменяется - сессия аналогично блокируется.
- httplost - Исправление бага браузера, теряющего иногда HTTPkey.
В таком случае чат проверяет наличие protect (куки PR1). Если она передается
серверу и корректна, то сервер дает браузеру незаметный для пользователя
редирект, благодаря которому браузер опять вспоминает и опять
постоянно начинает передавать ключ HTTP-авторизации. В результате редиректа
пользователь ничего не теряет. После редиректа он будет на той же
странице и с теми же параметрами, что были в момент утери ключа.
Если после редиректа восстановить не удается, то пользователю так и пишут:
ваш браузер потерял HTTPpass и не хочет его восстановить
(именно потерял, а не попытка подделки).
(*) - Эти проверки возможны только при входе в чат и при админских операциях,
они немного замедляет работу, т.к. требуют бОльшей передачи информации
от браузера в PHP (чем обычные страницы). Все остальные проверки выполнются при каждой загрузке
какой-угодно страницы, а эти, перечисленные, только во время некоторых
операций (вход в чат, смена пароля, админская команда и т.д.)
Алгоритм HTTPPASS работает только при наличи cookies в браузере и включенного алгоритма
PROTECT. Из-за багов браузере иногда тот может терять ключ HTTP авторизации,
из-за чего чат вынужден либо прекратить работу (из-за смены ключа на пустой
пароль), либо перепроверить все параметры браузера и наличие куки PROTECT.
Если все параметры браузера и cookies совпадают с первоначальными (и HTTPLOST
разрешено), то чат переустанавливает этот ключ, просто сообщая его браузеру
повторно. Получается, что кука PR1 может замещать ключ HTTP-авторизации.
Чтобы добиться большей защиты, отключите HTTPLOST.
Существует проблема с веб-серовером IIS. На нем рекомендуется поставить
в src/cnfvar.php опцию "$usehttppass=0". Разумеется, она полностью отключит
возможности HTTPPASS.
Если браузер по каким-то причинам не способен пересылать чату ключ HTTP-авторизации,
то чат продолжает работать, автоматически отключая данный режим для конкретного
пользователя.