Чтобы не дать самому себе заложить проект под сукно, веду ежедневный дневник работы над сабжем.
Вчерашний вечер потратил на систему защиты. Прежняя «Американка» была очень устойчива к банальным манипуляциям над URL и cookies, но времена изменились: если пять лет назад слово «сниффер» знали только кулхацкеры, то нынче этой штукой элегантно пользуются и домохозяйки. Обладатель сниффера в локалке в течение дня станет хозяином всех цифровых личностей коллег—посетителей «Американки»... старой «Американки».
Американка NG будет выдерживать разумный компромисс между удобством, простотой и безопасностью.
1. Удобство — неиспользование HTTPS (оглядываясь на мобильные платформы и прочие облегченные клиенты; и помня, что услуга HTTPS не всегда под рукой).
2. Простота — реализация минимальным объёмом кода с сохранением максимума наработок старой «Американки» (хорошо себя показавших).
3. Безопасность — даже полностью наблюдая трафик посетителя чата, «человек посередине» будет иметь трудности с применением результатов своих наблюдений.
Система безопасности Американки NG делится на два этапа: безопасный вход в чат (этого не было вообще) и безопасная работа с ним (это было, но больше не отвечает реалиям).
Взамен простой, как ситцевое исподнее, отправки логина-пароля открытым текстом, вход в чат выглядит (не сегодняшний день) так:
Человек открывает страницу входа. С ней передаётся хэшированный MD5 ключ для логина. По нажатию кнопочки входа браузер посредством Javascript: а) прибавляет ключ к паролю; б) снова хэширует полученный текст по MD5; в) обнуляет текстовый пароль; 4) передаёт логин и хэш на сервер. Зная начальный ключ и ожидаемый пароль, сервер заново создаёт ожидаемый хэш пароля и сравнивает его с полученным. Текстовый пароль, таким образом, не передаётся, а перехваченный «человеком посередине» хэш нельзя будет использовать для повторного логина: начальный ключ логина не будет совпадать.
Мне пока неясно, нужно ли делать хэширование реквизитов во время работы с чатом. Воможно, что и нет. Одноразовые «жетоны безопасности» сами по себе хороши, а с увеличенной в разы частотой их обновления в новой «Американке» они станут ещё лучше.
Конечно, все эти ухищрения блекнут в случае, если «человек посередине» может не только наблюдать, но перехватывать трафик пациента, заменяя его своим. Но... в конце концов, это всего лишь веб-чат :-) Нужно сделать так, чтобы «каждая домохозяйка» не могла прочесть перехваченный пароль, всё.
Из других контуров будущего чата просматриваются:
1) Юникод. Это будет первый мой веб-проект (стыд, стыд) сделанный изначально и целиком в UTF-8. Долой разброд и шатание в русском языке.
2) Не по-вебчатовски насыщенный чат. Благодаря тому, что в Американке NG не будут вновь и вновь передаваться страницы реплик (а только новые из них), сэкономленный трафик можно пустить на аватары в списке пользователей, а пожалуй — и в самом тексте чата.
3) Сохраняется милая сердцам ветеранов цветовая гамма старой «Американки», но, скорее всего, будут предусмотрены переключаемые в реальном времени скины.
Пока всё. испытываю непривычное желание добраться домой, разогнать всех по койкам и сесть за работу. Возможно, инфекция.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий