Внимание! это - авторская информация, защищенная законом об авторских правах. Но вы МОЖЕТЕ размещать данные тексты у себя на сайте, при условии размещения с текстом активной ссылки на первоисточник и указания автора:
Здесь я хочу сказать несколько слов об одной проблеме. Моя
основная цель - натолкнуть Вас на собственные исследования в этой области. Надо
сказать, что это не так уж и сложно, как кажется на первый взгляд, и при
определенных обстоятельствах есть возможность сделать свой собственный чат,
пользуясь только РНР, и даже без поддержки баз данных. А этот материал - всего
лишь маленький намек на те проблемы, и методы их решения, которые могут
встретиться у Вас на пути.
Итак, чат. Очень многие вебмастера мечтают сделать для
своих посетителей хороший чат, но они даже не представляют всю сложность этой
задачи. Как правило, такой вебмастер идет проторенным путем, ищет в Интернете
исходники чатов и размещает их у себя на сервере. Непременное условие -
обязательное наличие на сервере поддержки одного из языков программирования. Как
правило, чаты предпочитают делать на CGI (например, на языке Perl, но совсем не
обязательно), и такие чаты получаются достаточно быстрыми и надежными.
Но как быть тому, кто по ряду причин не может себе
позволить запускать скрипты CGI на своем сайте? Или не может до конца освоить
один из языков программирования для CGI? Или, если даже и освоил один из языков
для CGI, просто не знает, как подступиться к проблеме. Конечно, совсем без
усилий тут не обойтись, ведь чат - дело серьезное, и требует к себе внимательного
отношения.
Нет, вообще-то можно пойти и по легкому пути. Например -
открыть свой чат на другом бесплатном сервере. А что - преимуществ масса, ведь
вся настройка сводится к выбору цвета, расположения фреймов, другим мелким
деталям...
Но есть как всегда и отрицательные стороны такого решения.
Никто за просто так Вам не даст пользоваться своим чатом - придется
рассчитываться тем, что на Вашем чате будут показываться неизвестно чьи
баннеры. Да и прикрыть могут в любой момент. Только реально это единственный
способ сделать чат тем, у кого хостинг не поддерживает CGI. Опять же –
отрицательный момент в том, что посетитель на самом деле уйдет с Вашего сайта,
а это тоже не есть хорошо.
Однако, как всегда есть способ лучше! Если Вы располагаете
поддержкой сервера CGI или РНР, Вы можете легко найти в Интернете массу хороших
и не очень скриптов чатов, и разместить их у себя на сайте, тогда Вы уже ни от
кого не будете зависеть. Но есть недостатки и у этого способа. Дело в том, что
исходники таких чатов всегда общедоступны. И у них почти всегда обнаруживается
какая-нибудь уязвимость, позволяющая злоумышленникам взламывать Ваш любимый
чат.
Не всегда такие взломы приносят существенный вред, но все
равно не приятно, что кто-то роется там, где доступа никому нет. Итак, если Вы
готовы воспользоваться уже написанным кем-то кодом чата, будьте готовы к двум
проблемам - предварительной настройке чата (это тоже не так просто иногда), и к
возможности взлома чата недоброжелателями через стандартную ошибку, коими часто
просто изобилуют бесплатные скрипты.
Если перечисленные вопросы очень важны для Вас, придется
идти по трудному и сложному пути - пути создания своего собственного чата. Для
основного языка программирования можно выбрать РНР, так как его поддержка
наиболее часто встречается на серверах в сети. Кроме того, исключительно из
совместимости можно поставить себе ряд условий - никаких баз данных, и
работоспособность на версии РНР3.
Это еще больше усложняет задачу, так как придется
отказаться от сессий, поддержка которых включена только в 4 версию РНР. Но -
именно это дает нам возможность важной для нас сейчас совместимости, уж на 3
версии работают сейчас все сервера в сети. Итак, я повторюсь - основная наша
задача есть работа чата на РНР версии 3 без баз данных.
Этот материал писался в то время, когда 4 версия языка
HYH только появилась в
сети, и еще не получила достаточного распространения. В целях сохранения
последовательности изложения мысли я оставляю данный текст неизменным, но Вы
помните о том, что все меняется в этом мире. Главное – суть осталась.
Что можно сделать исходя из поставленных условий? Очень
многое на самом деле. Во-первых, нам придется решать проблемы авторизации
пользователей в чате. Это - одна из самых больших проблем, и не только в чатах,
но и во всем мире.
Предложенных решений масса, но у каждого из них есть очень
большой недостаток - знание того, как все шифруется, неизбежно приводит к
появлению алгоритмов расшифровки. Значит, нам придется делать свой собственный
алгоритм шифрования паролей пользователей с условием невозможности расшифровки
за разумный промежуток времени (надеюсь, NASA или ФБР не будут ломать Ваш чат).
Кроме того, неплохо бы было сделать так, чтобы даже при
краже файла с паролями их невозможно было бы расшифровать. В моем опыте есть
случай, когда ошибка одного скрипта привела к появлению возможности доступа к
исходникам на сайте, и - к краже паролей.
Правда, тут есть и большой минус. Если человек забыл
пароль, его нельзя уже восстановить, так как пароль нигде не хранится
незашифрованным. В этом случае можно удалять регистрационную запись
пользователя и предоставить ему возможность повторно зарегистрироваться.
В качестве альтернативной авторизации нужно использовать
почтовый ящик, который пользователь должен указать при регистрации. Если он не
указывается – ему же (пользователю) хуже, ведь установить точно, является ли он
действительно владельцем регистрационной записи с потерянным паролем уже
нельзя. Если же ящик указан и указан правильно, на него следует отправить
запрос об удалении регистрационной записи, и при положительном ответе
регистрация снимается простым удалением строчки из файла с регистрационными
данными. Кстати, сам адрес электронной почты тоже можно шифровать, но уже
обратимым методом, в отличие от пароля. Хотя, иногда это лишнее.
Возможно, покажется странным, что пароли будут шифроваться
до такого состояния, что их нельзя (мы уже условились, что нельзя - это значит
нельзя за разумный промежуток времени, а вообще-то можно все, только долго)
даже расшифровать. Как же эти пароли будут проверяться на соответствие с
хранимым в базе зашифрованным паролем?
Все очень просто и элегантно. Я опишу на примере
Windosw2000, где реализован примерно следующий алгоритм. При регистрации
пользователь вводит свой пароль, он обрабатывается специальной функцией
необратимого шифрования и результат заносится в базу паролей вместе с учетными
записями (имя пользователя, описание и т.д.). Когда пользователь входит в
систему в следующий раз, Windows опять шифрует введенный пароль своей стандартной функцией и сравнивает
результат с тем, что хранится у нее в базе данных паролей. Если результат
шифрования введенного пароля и хранящегося в базе есть идентичные строки,
пользователь авторизован, если нет - ошибка ввода пароля.
Таким образом, достигается большая конфиденциальность, так
как пароль не хранится в открытом виде, а хранится уникальный идентификатор
строки, соответствующей паролю. И даже если база данных с хранимыми паролями
будет украдена, толку от этого похитителю будет мало, ведь открытых паролей там
нет, только зашифрованные. А обратной расшифровке такие идентификаторы просто
не поддаются, уж так устроена функция шифрования.
Внимание! это - авторская информация, защищенная законом об авторских правах. Но вы МОЖЕТЕ размещать данные тексты у себя на сайте, при условии размещения с текстом активной ссылки на первоисточник и указания автора:
Книга посвящена разработке RIA-приложений (Rich Internet Applications) с использованием технологии JavaFX 2.0. Рассмотрены архитектура платформы JavaFX 2.0, ее основные компоненты...
Марк Лутц
Монументальный труд Марка Лутца представляет собой учебник по применению языка Python в системном администрировании, для создания графических интерфейсов...
Лэнс Лавдэй
Большинство российских веб-дизайнеров озабочены тем, чтобы сделать сайт красивым. Но они редко думают о том, что на самом деле нужно владельцу сайта. То есть о бизнес-показателях...
Стив Джонсон, Лайам МакГи
Поисковая система Google сегодня представляет собой доминирующую силу в Интернете, ежедневно обрабатывая миллионы поисковых запросов и онлайновых покупок. Поэтому любому, кто...