среда, мая 23, 2007

Вести в фронта: Американка NG

Чтобы не дать самому себе заложить проект под сукно, веду ежедневный дневник работы над сабжем.

Вчерашний вечер потратил на систему защиты. Прежняя «Американка» была очень устойчива к банальным манипуляциям над URL и cookies, но времена изменились: если пять лет назад слово «сниффер» знали только кулхацкеры, то нынче этой штукой элегантно пользуются и домохозяйки. Обладатель сниффера в локалке в течение дня станет хозяином всех цифровых личностей коллег—посетителей «Американки»... старой «Американки».

Американка NG будет выдерживать разумный компромисс между удобством, простотой и безопасностью.

1. Удобство — неиспользование HTTPS (оглядываясь на мобильные платформы и прочие облегченные клиенты; и помня, что услуга HTTPS не всегда под рукой).

2. Простота — реализация минимальным объёмом кода с сохранением максимума наработок старой «Американки» (хорошо себя показавших).

3. Безопасность — даже полностью наблюдая трафик посетителя чата, «человек посередине» будет иметь трудности с применением результатов своих наблюдений.

Система безопасности Американки NG делится на два этапа: безопасный вход в чат (этого не было вообще) и безопасная работа с ним (это было, но больше не отвечает реалиям).

Взамен простой, как ситцевое исподнее, отправки логина-пароля открытым текстом, вход в чат выглядит (не сегодняшний день) так:

Человек открывает страницу входа. С ней передаётся хэшированный MD5 ключ для логина. По нажатию кнопочки входа браузер посредством Javascript: а) прибавляет ключ к паролю; б) снова хэширует полученный текст по MD5; в) обнуляет текстовый пароль; 4) передаёт логин и хэш на сервер. Зная начальный ключ и ожидаемый пароль, сервер заново создаёт ожидаемый хэш пароля и сравнивает его с полученным. Текстовый пароль, таким образом, не передаётся, а перехваченный «человеком посередине» хэш нельзя будет использовать для повторного логина: начальный ключ логина не будет совпадать.

Мне пока неясно, нужно ли делать хэширование реквизитов во время работы с чатом. Воможно, что и нет. Одноразовые «жетоны безопасности» сами по себе хороши, а с увеличенной в разы частотой их обновления в новой «Американке» они станут ещё лучше.

Конечно, все эти ухищрения блекнут в случае, если «человек посередине» может не только наблюдать, но перехватывать трафик пациента, заменяя его своим. Но... в конце концов, это всего лишь веб-чат :-) Нужно сделать так, чтобы «каждая домохозяйка» не могла прочесть перехваченный пароль, всё.

Из других контуров будущего чата просматриваются:

1) Юникод. Это будет первый мой веб-проект (стыд, стыд) сделанный изначально и целиком в UTF-8. Долой разброд и шатание в русском языке.

2) Не по-вебчатовски насыщенный чат. Благодаря тому, что в Американке NG не будут вновь и вновь передаваться страницы реплик (а только новые из них), сэкономленный трафик можно пустить на аватары в списке пользователей, а пожалуй — и в самом тексте чата.

3) Сохраняется милая сердцам ветеранов цветовая гамма старой «Американки», но, скорее всего, будут предусмотрены переключаемые в реальном времени скины.

Пока всё. испытываю непривычное желание добраться домой, разогнать всех по койкам и сесть за работу. Возможно, инфекция.

Комментариев нет:

Поиск по этому блогу