Pull to refresh
26
0
Андрей Кулинич @4vanger

javascript guru

Send message
И никто не вспомнил, что именно Гмейл стал первым приложением эпохи web2.0. До него XHR и DHTML использовались только для создания прикольных эффектов на веб-страничках. А Гмейл показал всем, как много можно сделать используя Javascript (конечно там ещё на бекэнде дофига работы, но ведь все оценивают по интерфейсу). Именно благодаря Гмейлу сегодня мы можем работать с интернетом, не перезагружая всю страницу по малейшему поводу и у нас есть все эти клёвые веб-приложения, которые заменяют по функционалу аналогичные desktop приложения. Ну и Хабр, да.
я понимаю, что у меня очень специфическая задача, но всё же решение заслуживает внимание.
Итак есть веб-мейл. Аджакс, вебдваноль — все дела. Задача — подгрузить текст письма по XHR и отобразить его в браузере. Попутно убрав оттуда все попытки XSS.
Решение — препроцессинг HTML через DOM парсинг. То есть — создаю ноду, но не добавляю её в документ. Так и висит без парента. Браузеры это понимают и поэтому всё содержимое этой ноды вообще никак не влияет на документ (ну почти все браузеры — попутно нашёл баг в webkit — он таки добавляет некоторые элементы в основном документ).
После этого запихиваю в эту ноду текст ХТМЛ-письма и прохожусь по нему парсером, вырезая оттуда всё, что мне не нравится — весь JS и все способы его туда запихнуть.
После этой обработки — беру ХТМЛ письма через innerHTML и со спокойной совестью вставляю его в основной документ.
Плюсы:
— DOM-парсинг самый надёжный — ему плевать на незакрытые теги, зашифрованное содержимое аттрибутов и прочие приколы, которые должны обмануть HTML purifier'ов и иже с ними.
— это всё делается на клиенте, а не на сервере — снижается нагрузка на сервер.
Минусы: наверное только то, что это решение можно применять только в очень специфических задачах типа моей — когда контент выводится относительно нечасто (выводить так сотни писем в секунду будет уже несколько напряжно для клиента).
ну ты понимаешь, что если бы это было настоящее видео, то преподносить его надо было бы исключительно под соусом фейка ;) Сразу и откровенно говорить что это фейк.
(ответь в вортексе)
Не, самый класс это имея доступ на БС смотреть как среди потока фейков иногда проскакивают скриншоты с реального БС, но их тоже называют фейками и всегда находят убедительные аргументы в доказательство :)
Я считаю что те 5% мазохистов пользователей, которые добровольно отключают JS в браузере — уже давно смирились с тем, что у них не работает абсолютное большинство сайтов и вряд ли станут обижаться на ещё один сайт. Как-никак на дворе уже почти что 2009 год, а не 1998.
для IE юзеров надо кликнуть правой кнопкой по линку и выбрать «Добавить в избранно» и там добавить в папку «Ссылки». Эта папка отображается на панели браузера, если юзер этого захочет. Поскольку это обычный способ для IE-пользователей — не вижу в этом ничего неудобного. Особенно по сравнению с плагином, для инсталляции которого необходимо проделать гораздо больше действий.
То есть есть по сути возражений нету, вы вообще не пробовали букмарклет в IE и «факт» как бы отсутствует, так?
Что именно вам не понравилось?
Вы усложняете задачу без всяких на то поводов — зачем писать плагины под каждый браузер, когда букмарклет делает в точности то же самое и работает во всех браузерах? Какие конкурентные преимущества даст плагин, чтобы тратить время на его разработку? Букмарклет не требует установки, букмарклет можно использовать, если браузер не поддерживает плагины, букмарклет работает, если юзеру запрещено устанавливать плагины.
к счастью как оказалось мы угадали с идеей и продвинутые пользователи, которые и раньше использовали разные премудрости в подобных случаях, по достоинству оценили нашу реализацию. Теперь надо шлифовать и добавлять фичи — например при просмотре емейла, если он получен на адрес zcount'а — показывать с какого сайта он получен ну и т.д.
Мы, когда создавали zcounts, руководствовались следующими принципами:
1) для каждой регистрации в любом сервисе используется новый, уникальный емейл.
2) для каждой регистрации надо использовать хороший, длинный, взломостойкий пароль
3) как только сайт начинает слать спам — значит он скурвился и сдал свою базу спамерам — одним кликом перестаём получать почту с этого ящика
4) Пароли и емейлы хранятся на сервере, так что я их никогда не забуду и не потеряю — достаточно поставить и помнить только хороший пароль на доступ к аккаунту.

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

Теперь, предположим, сайт ломанули или его владелец решил подзхаработать. В общем тебе начал идти спам. Как узнать кто сдал мой емейл? Да элементарно — по адресу мы вытаскиваем запись из базы и говорим: «А ты знаешь, что это very.bad.site тебя предал! Прикажешь удалить этот емейл, хозяин?». Удаляем емейл, перестаём получать спам и пишем на хабр, что very.bad.site такие-сякие и что ходить к ним не следует.

Это удобно и для предотвращения случаев, когда спам-база собирается с помощью вирусов, которые крадут содержимое адресных книжек. Придерживайся правила — один адресат — один емейл. Идеально, если вообще никто не будет знать твоего настоящего адреса — тогда ты *никогда* не получишь на него спам.

Это гораздо удобнее, чем использование одноразовых сервисов, которые не сохраняют твою почту, удобнее регистрации многоуровневой системы ящиков с форвардами на один основной ящик.
Спасибо за комплимент.
Справедливости ради - у нас есть и бесплатная версия.
Андрей Кулинич - разработчик Zapatec.Tree
12 ...
7

Information

Rating
Does not participate
Date of birth
Registered
Activity