Удобная кросс-доменная авторизация и персонализация для DDOS-устойчивого сайта Redis + Varnish + Javascript
DDOS
Приходит HTTP-запросов/сек с разных IP… Что делать? Идеи? DDOS-устойчивый сайт Как защититься? ИЛИ?
1.Вычислять и банить IP ботов – Способы есть, но это сложно: Боты маскируются. Оператор – не дурак. Ботнет большой. DDOS-устойчивый сайт Варианты защиты
2.Настоящий Хайлоад – Большие расходы: железо, программирование… – DDOS закончится и все это будет не надо. DDOS-устойчивый сайт Варианты защиты
3.Не пускать анонимов в движок – Обслуживать их из быстрого кеша Captcha! – Медленный сервис? Captcha! DDOS-устойчивый сайт Варианты защиты
Что это означает для движка? Типичный проект посетитель Как внедрить кеширование для анонимов ?
Первый подход. Классика жанра. Движок с кешированием посетитель FastCGI запрос страница
Короче Структура – Много компонент – Много лишней работы по копированию данных Производительность – Средняя, а нужна максимальная.
Версия 2.0 "Кэш – наше всё" посетитель авторизация HTTP-КЭШ FastCGI … P.S. Также пробовали подписанные куки разные для анонима и зарегистрированного COOKIE.= md5(secret_anon,cookie).substr(0,4) COOKIE.= md5(secret_regged,cookie).substr(0,4)
База а-ля Memcache Хранит все в памяти – Сохраняет периодически или по запросу GET SET EXPIRE Умеет структуры данных – HASH, (Sorted) SET, LIST Redis БЫСТРО! - это БЫСТРО!
Кеширующий прокси / сервер / балансер /… Хуки на всех стадиях обработки запроса Varnish
Ответ генирируют скрипты Что получилось 1 2 Авторизован? Да Нет 3 Ответ из кеша C{ … }C посетитель
Вопросы? ==cut
Персонализируемый сайт Просмотренные товары Геотаргетинг Персонализация «рулит» Она нужна всем, включая анонимных посетителей => Авторизуем всех! То, что надо!!! Онлайн-сервисы
Кэш – страница генерируется 1 раз Персонализация – страница подстраивается под посетителя Идеи? Кэш VS персонализация Как объединить?
1.Персонализация влияет комплексно. – Геотаргетинг телефоны, цены, информация... – Каждый геотаргетинг - своя страница в кеше Кэш + персонализация mod_geoip Russia Japan USA посетитель Варианты страницы
2.Персонализация влияет точечно. – Блочные сервисы Последние просмотры Реклама... Кэш + персонализация … … Подзапрос
К записи в кэше прикреплены тэги. Тэги задаются при генерации страницы. По тэгам можно удалять. Очистка кеша при изменениях
Пример: – Страница фото Тэг: foto_123 – Фото обновляется » При изменении файла или описания фото » При изменении кол-ва комментариев Очистка кеша при изменениях
Пример: – Страница галереи / тэга Тэги: foto_1, foto_2, …, foto_20 Очистка кеша при изменениях
Рецепты 1.Ограничить время жизни кеша 2.Убивать все Весь тэг article при изменении дерева статей – Или все URL вида article/* Кэш + сложные зависимости … или когда добавить таги лень Главное –HIT/MISS
Кешируем и для зарегистрированных – SID в Hash Поддержка 304 в браузере Полезные ссылки – – – – Дополнительно
==cut
Один сайт – много доменов 2 уровня – – – – … Нахрена? Нахрена? – SEO ! Мульти-доменный сайт
Вошел на один сайт – Кросс-доменная авторизация … Авторизован на всех Идеи?
Вход, выход, авторизация – на мастере – master.com Задача - синхронизировать Cookie между доменами Как? – См. следующий слайд Кросс-доменная авторизация
Персонализирующий скрипт Анонимная страница a.com 1.Загрузить/создать сессию По кукам master.com 2.Если зарегистрированный: Поставить куку на b.com =>reload 3.Если аноним: Персонализация при помощи JS Cookie анонима стоят только на master.com
Производительность a.com/… SID существует, авторизован и валиден? Страница из кэша Нет Да движок C + +
3 rd party cookie! – Политика безопасности P3P – Safari запрещает по умолчанию Другие браузеры можно настроить – Демо Демо Как обойти? Pitfall
Динамическая форма с любой страницы – Кросс-доменная коммуникация - логин-пароль нельзя передавать GET window.name + вспомогательный iframe Действия для авторизованного посетителя – Auth.decorate(callback) Автопривязка после регистрации – Комментарии Все вместе – См. демо Удобная авторизация
1.Время жизни однократных посетителей – Если в течение минуты не было захода – удалять – Защищает от ботов без кук 2.Против ботов с поддержкой Cookie – Как правило, таких ботов меньше – Не хранить анонимов с IE6 Определение по browser features –> запись в Cookie – Персонализация не везде – Captcha… Дополнительная защита