SlideShare a Scribd company logo
1 of 32
Удобная кросс-доменная авторизация и персонализация для DDOS-устойчивого сайта Redis + Varnish + Javascript
DDOS
DDOS-устойчивый сайт Как защититься? Приходит 10.000 HTTP-запросов/сек с разных IP… Что делать? Идеи? ИЛИ ?
DDOS-устойчивый сайт Варианты защиты Вычислять и банить IP ботов Способы есть, но это сложно: Боты маскируются. Оператор – не дурак. Ботнет большой.
DDOS-устойчивый сайт Варианты защиты Настоящий Хайлоад Большие расходы: железо, программирование… DDOS закончится и все это будет не надо.
DDOS-устойчивый сайт Варианты защиты Не пускать анонимов в движок Обслуживать их из быстрого кеша Медленный сервис? Captcha!
Что это означает для движка? Типичный проект посетитель Как внедрить кеширование для анонимов ?
Первый подход. Классика жанра. Движок с кешированием запрос FastCGI страница посетитель
Короче Структура Много компонент Много лишней работы по копированию данных Производительность Средняя, а нужна максимальная.
Версия 2.0"Кэш – наше всё" авторизация FastCGI … HTTP-КЭШ посетитель P.S.  Также пробовали подписанные куки разные для анонима и зарегистрированногоCOOKIE .= md5(secret_anon,cookie).substr(0,4)COOKIE .= md5(secret_regged,cookie).substr(0,4)
Redis База а-ля Memcache Хранит все в памяти Сохраняет периодически или по запросу GET SET EXPIRE  Умеет структуры данных HASH, (Sorted) SET, LIST - это БЫСТРО!
Varnish Кеширующий прокси / сервер /балансер /… Хуки на всех стадиях обработки запроса http://www.varnish-cache.org/trac/wiki/VarnishFeatures
Что получилось 2 C{ … }C 1 посетитель Нет 3 Авторизован? Ответ из кеша Да Ответ генирируют скрипты
==cut  Вопросы?
Персонализируемый сайт Геотаргетинг Онлайн-сервисы Просмотренные  товары То, что надо!!! Персонализация «рулит» Она нужна всем, включая анонимных посетителей => Авторизуем всех!
Кэш VSперсонализация Как объединить? Кэш  страница генерируется 1 раз Персонализация   страница подстраивается под посетителя Идеи?
Кэш + персонализация Персонализация влияет комплексно. Геотаргетинг телефоны, цены, информация... Каждый геотаргетинг - своя страница в кеше 2 mod_geoip 1 3 посетитель Варианты страницы Russia Japan USA
Кэш + персонализация Персонализация влияет точечно. Блочные сервисы Последние просмотры Реклама ... <html> <divclass="sidebar">    … <esisrc="/lastread.php"/>    … </div> </html> Подзапрос
Очистка кеша при изменениях К записи в кэше прикреплены тэги. Тэги задаются при генерации страницы. По тэгам можно удалять.
Очистка кеша при изменениях Пример: Страница фото http://www.photosight.ru/photos/3933415/ Тэг: foto_123 Фото обновляется При изменении файла или описания фото При изменении кол-ва  комментариев
Очистка кеша при изменениях Пример: Страница галереи / тэга http://www.photosight.ru/photos/category/7/ Тэги: foto_1, foto_2, …, foto_20
Кэш + сложные зависимости… или когда добавить таги лень Рецепты Ограничить время жизни кеша Убивать все Весь тэг article при изменении дерева статей Или все URL вида article/* Главное –HIT/MISS
Дополнительно Кешируем и для зарегистрированных SID в Hash Поддержка 304 в браузере Полезные ссылки http://www.varnish-cache.org/docs/2.1/ http://www.slideshare.net/tgr1/varnish-plnog-4 http://www.slideshare.net/crucially/varnish-velocity-ignite http://kristianlyng.../smart-bans-with-varnish/
==cut
Мульти-доменный сайт Один сайт – много доменов 2 уровня http://site.ru http://notebook-site.ru http://mouse-site.ru … Нахрена? SEO !
Кросс-доменная авторизация Вошел на один сайт http://site.ru … Авторизован на всех ,[object Object]
http://mouse-site.ruИдеи?
Кросс-доменная авторизация Вход, выход, авторизация – на мастере master.com Задача - синхронизировать Cookie между доменами Как? См. следующий слайд
Персонализирующий скрипт Анонимная страница a.com http://master.com/auth.php Загрузить/создать сессию По кукам master.com Если зарегистрированный: Поставить куку  на b.com=>reload Если  аноним: Персонализация при помощи JS <html> <head> <scriptsrc="http://master.com/auth.php"> ... </head> ... ,[object Object],[object Object]
Pitfall 3rd party cookie! Политика безопасности P3P  Safari запрещает по умолчанию Другие браузеры можно настроить Демо Как обойти?
Удобная авторизация Динамическая форма с любой страницы Кросс-доменная коммуникация <script>  - логин-пароль нельзя передавать GET window.name+ вспомогательный iframe Действия для авторизованного посетителя Auth.decorate(callback)  Автопривязка после регистрации Комментарии Все вместе См. демо http://master.com
Дополнительная защита Время жизни однократных посетителей Если в течение минуты не было захода – удалять Защищает от ботов без кук Против ботов с поддержкой Cookie Как правило, таких ботов меньше Не хранить анонимов с IE6 Определение по browser features –> запись в Cookie Персонализация не везде  Captcha…

More Related Content

What's hot

лекция №10
лекция №10лекция №10
лекция №10student_kai
 
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsTrainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsDevOWL Meetup
 
Разработка адаптивных шаблонов на базе Omega
Разработка адаптивных шаблонов на базе OmegaРазработка адаптивных шаблонов на базе Omega
Разработка адаптивных шаблонов на базе OmegaTaras Omelianenko
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2GoQA
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Mail.ru Group
 
Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать
Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделыватьЧек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать
Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделыватьIhor Zenich
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Vladimir Malyk
 
Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)
Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)
Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)Positive Hack Days
 
Jody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on RailsJody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on Railszykin-ilya
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Mail.ru Group
 
Сборка Front-end’a
Сборка Front-end’aСборка Front-end’a
Сборка Front-end’aDelphiCon
 
Отдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования GoogleОтдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования GoogleIT61
 
Node JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияNode JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияAlexander Kucherenko
 

What's hot (20)

лекция №10
лекция №10лекция №10
лекция №10
 
Bootstrap3 basics
Bootstrap3 basicsBootstrap3 basics
Bootstrap3 basics
 
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsTrainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
 
Разработка адаптивных шаблонов на базе Omega
Разработка адаптивных шаблонов на базе OmegaРазработка адаптивных шаблонов на базе Omega
Разработка адаптивных шаблонов на базе Omega
 
Speed
SpeedSpeed
Speed
 
Bootstrap 3
Bootstrap 3Bootstrap 3
Bootstrap 3
 
Postgres
PostgresPostgres
Postgres
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
 
Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать
Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделыватьЧек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать
Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать
 
Скриншоты как сервис
Скриншоты как сервисСкриншоты как сервис
Скриншоты как сервис
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)
Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)
Positive Hack Days. Воронцов. Безопасность браузеров: новый взгляд (0-day)
 
Jody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on RailsJody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on Rails
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
 
Сборка Front-end’a
Сборка Front-end’aСборка Front-end’a
Сборка Front-end’a
 
Отдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования GoogleОтдаем страницы быстрее или как вписаться в требования Google
Отдаем страницы быстрее или как вписаться в требования Google
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8
 
Node JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияNode JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решения
 

Viewers also liked

Prezentare Proiect Add Ads
Prezentare Proiect Add AdsPrezentare Proiect Add Ads
Prezentare Proiect Add Adsgia codrescu
 
Sociala Medier - Hot Eller Möjlighet
Sociala Medier - Hot Eller MöjlighetSociala Medier - Hot Eller Möjlighet
Sociala Medier - Hot Eller MöjlighetAndreas Norman
 
Such A Beautiful Story
Such A Beautiful StorySuch A Beautiful Story
Such A Beautiful StoryFethi KARALI
 
GjøR Et Spikk
GjøR Et SpikkGjøR Et Spikk
GjøR Et Spikktdahler
 
Η εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκες
Η εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκεςΗ εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκες
Η εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκεςLevadia Library
 
創世記一至十一章系列五
創世記一至十一章系列五創世記一至十一章系列五
創世記一至十一章系列五guest074e1c0
 
Energy efficiency presentation
Energy efficiency presentationEnergy efficiency presentation
Energy efficiency presentationAustin Energy
 
What could you do with XinSpring?
What could you do with XinSpring?What could you do with XinSpring?
What could you do with XinSpring?MintTwist
 

Viewers also liked (20)

Materisoalipa
MaterisoalipaMaterisoalipa
Materisoalipa
 
Assessment
AssessmentAssessment
Assessment
 
Nov 2 Class
Nov 2 ClassNov 2 Class
Nov 2 Class
 
Prezentare Proiect Add Ads
Prezentare Proiect Add AdsPrezentare Proiect Add Ads
Prezentare Proiect Add Ads
 
Tam su cua ba me
Tam su cua ba meTam su cua ba me
Tam su cua ba me
 
Sociala Medier - Hot Eller Möjlighet
Sociala Medier - Hot Eller MöjlighetSociala Medier - Hot Eller Möjlighet
Sociala Medier - Hot Eller Möjlighet
 
April forum bao xuemingIncorporating TaiQi Practices into Chinese Language In...
April forum bao xuemingIncorporating TaiQi Practices into Chinese Language In...April forum bao xuemingIncorporating TaiQi Practices into Chinese Language In...
April forum bao xuemingIncorporating TaiQi Practices into Chinese Language In...
 
French America
French AmericaFrench America
French America
 
Brain-Based Foreign Language Learning
Brain-Based Foreign Language LearningBrain-Based Foreign Language Learning
Brain-Based Foreign Language Learning
 
Such A Beautiful Story
Such A Beautiful StorySuch A Beautiful Story
Such A Beautiful Story
 
Immigrants
ImmigrantsImmigrants
Immigrants
 
GjøR Et Spikk
GjøR Et SpikkGjøR Et Spikk
GjøR Et Spikk
 
Η εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκες
Η εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκεςΗ εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκες
Η εφαρμογή του Ταξινομικού συστήματος DEWEY στις ελληνικές λαϊκές βιβλιοθήκες
 
Ny State Lote Check Point B Exam, Yuqing Hong
Ny State Lote Check Point B Exam, Yuqing HongNy State Lote Check Point B Exam, Yuqing Hong
Ny State Lote Check Point B Exam, Yuqing Hong
 
創世記一至十一章系列五
創世記一至十一章系列五創世記一至十一章系列五
創世記一至十一章系列五
 
Energy efficiency presentation
Energy efficiency presentationEnergy efficiency presentation
Energy efficiency presentation
 
Swine Flu
Swine FluSwine Flu
Swine Flu
 
В облаке AWS
В облаке AWSВ облаке AWS
В облаке AWS
 
What could you do with XinSpring?
What could you do with XinSpring?What could you do with XinSpring?
What could you do with XinSpring?
 
Symfony
SymfonySymfony
Symfony
 

Similar to Redis varnish js

Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. ТрофименкоКэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко2ГИС Технологии
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011camp_drupal_ua
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановMoscowJS
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищиCUSTIS
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalVlad Savitsky
 
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Yandex
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Mikhail Shcherbakov
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
Телепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskТелепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskMODX Беларусь
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волковkarina krew
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Igor Sazonov
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014Yandex
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаMikhail Shcherbakov
 
Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Dmitry Evteev
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 

Similar to Redis varnish js (20)

Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. ТрофименкоКэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в Drupal
 
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
Телепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskТелепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup Minsk
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волков
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 

Redis varnish js

  • 1. Удобная кросс-доменная авторизация и персонализация для DDOS-устойчивого сайта Redis + Varnish + Javascript
  • 3. DDOS-устойчивый сайт Как защититься? Приходит 10.000 HTTP-запросов/сек с разных IP… Что делать? Идеи? ИЛИ ?
  • 4. DDOS-устойчивый сайт Варианты защиты Вычислять и банить IP ботов Способы есть, но это сложно: Боты маскируются. Оператор – не дурак. Ботнет большой.
  • 5. DDOS-устойчивый сайт Варианты защиты Настоящий Хайлоад Большие расходы: железо, программирование… DDOS закончится и все это будет не надо.
  • 6. DDOS-устойчивый сайт Варианты защиты Не пускать анонимов в движок Обслуживать их из быстрого кеша Медленный сервис? Captcha!
  • 7. Что это означает для движка? Типичный проект посетитель Как внедрить кеширование для анонимов ?
  • 8. Первый подход. Классика жанра. Движок с кешированием запрос FastCGI страница посетитель
  • 9. Короче Структура Много компонент Много лишней работы по копированию данных Производительность Средняя, а нужна максимальная.
  • 10. Версия 2.0"Кэш – наше всё" авторизация FastCGI … HTTP-КЭШ посетитель P.S. Также пробовали подписанные куки разные для анонима и зарегистрированногоCOOKIE .= md5(secret_anon,cookie).substr(0,4)COOKIE .= md5(secret_regged,cookie).substr(0,4)
  • 11. Redis База а-ля Memcache Хранит все в памяти Сохраняет периодически или по запросу GET SET EXPIRE Умеет структуры данных HASH, (Sorted) SET, LIST - это БЫСТРО!
  • 12. Varnish Кеширующий прокси / сервер /балансер /… Хуки на всех стадиях обработки запроса http://www.varnish-cache.org/trac/wiki/VarnishFeatures
  • 13. Что получилось 2 C{ … }C 1 посетитель Нет 3 Авторизован? Ответ из кеша Да Ответ генирируют скрипты
  • 15. Персонализируемый сайт Геотаргетинг Онлайн-сервисы Просмотренные товары То, что надо!!! Персонализация «рулит» Она нужна всем, включая анонимных посетителей => Авторизуем всех!
  • 16. Кэш VSперсонализация Как объединить? Кэш страница генерируется 1 раз Персонализация страница подстраивается под посетителя Идеи?
  • 17. Кэш + персонализация Персонализация влияет комплексно. Геотаргетинг телефоны, цены, информация... Каждый геотаргетинг - своя страница в кеше 2 mod_geoip 1 3 посетитель Варианты страницы Russia Japan USA
  • 18. Кэш + персонализация Персонализация влияет точечно. Блочные сервисы Последние просмотры Реклама ... <html> <divclass="sidebar"> … <esisrc="/lastread.php"/> … </div> </html> Подзапрос
  • 19. Очистка кеша при изменениях К записи в кэше прикреплены тэги. Тэги задаются при генерации страницы. По тэгам можно удалять.
  • 20. Очистка кеша при изменениях Пример: Страница фото http://www.photosight.ru/photos/3933415/ Тэг: foto_123 Фото обновляется При изменении файла или описания фото При изменении кол-ва комментариев
  • 21. Очистка кеша при изменениях Пример: Страница галереи / тэга http://www.photosight.ru/photos/category/7/ Тэги: foto_1, foto_2, …, foto_20
  • 22. Кэш + сложные зависимости… или когда добавить таги лень Рецепты Ограничить время жизни кеша Убивать все Весь тэг article при изменении дерева статей Или все URL вида article/* Главное –HIT/MISS
  • 23. Дополнительно Кешируем и для зарегистрированных SID в Hash Поддержка 304 в браузере Полезные ссылки http://www.varnish-cache.org/docs/2.1/ http://www.slideshare.net/tgr1/varnish-plnog-4 http://www.slideshare.net/crucially/varnish-velocity-ignite http://kristianlyng.../smart-bans-with-varnish/
  • 24. ==cut
  • 25. Мульти-доменный сайт Один сайт – много доменов 2 уровня http://site.ru http://notebook-site.ru http://mouse-site.ru … Нахрена? SEO !
  • 26.
  • 28. Кросс-доменная авторизация Вход, выход, авторизация – на мастере master.com Задача - синхронизировать Cookie между доменами Как? См. следующий слайд
  • 29.
  • 30. Pitfall 3rd party cookie! Политика безопасности P3P Safari запрещает по умолчанию Другие браузеры можно настроить Демо Как обойти?
  • 31. Удобная авторизация Динамическая форма с любой страницы Кросс-доменная коммуникация <script> - логин-пароль нельзя передавать GET window.name+ вспомогательный iframe Действия для авторизованного посетителя Auth.decorate(callback) Автопривязка после регистрации Комментарии Все вместе См. демо http://master.com
  • 32. Дополнительная защита Время жизни однократных посетителей Если в течение минуты не было захода – удалять Защищает от ботов без кук Против ботов с поддержкой Cookie Как правило, таких ботов меньше Не хранить анонимов с IE6 Определение по browser features –> запись в Cookie Персонализация не везде Captcha…