Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kukutz ([info]kukutz)
@ 2006-01-26 14:14:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Из-за чего поменяли схему адресации и авторизации ЖЖ
Тут ходят упорные слухи, что "из-за Мозиллы". Нет, не из-за Мозиллы.

Из-за своего исторического раздолбайства.

В ЖЖ всегда (ну или очень давно) можно было подключать внешние стили, CSS. Всегда во внешних стилях можно было использовать скрипт и украсть куку в MSIE (поправьте меня, если я ошибаюсь). Не так давно это же научились делать и в Mozilla.

После того, как хакерская группа Bantown стала использовать эту уязвимость в массовых масштабах, перед разработчиками ЖЖ встали такие альтернативы:
1. Запретить внешние CSS. Приведёт к ужасным воплям и массовым исходам на другие сервисы. Потому что люди привыкли.
2. Проставить куке аттрибут HttpOnly, чтобы её нельзя было прочесть из скрипта. Не решает проблемы, потому что Mozilla не поддерживает HttpOnly, т.е. это защитит только IE-пользователей.
3. Переделать схему авторизации так, что если украсть вашу куку в чужом журнале, то это не даст ничего сделать в вашем журнале. Это и выбрали.

Правда ведь, в этом не "дыра в Mozilla виновата", да?

Другие сервисы могут легко защититься от таких проблем, просто не давая использовать внешние CSS (ну, наряду с использованием санитайзера для вырезания скриптов из того пользовательского HTML, что внутри сервиса).

UPDATE: это не информация от разработчиков, а мои домыслы. Поэтому со мной можно спорить - буду рад, если спор будет аргументированным =)


(Читать комментарии) - (Добавить комментарий)


[info]ex_ex_zhuzh@lj
2006-01-26 10:05 (ссылка)
1. Запретить внешние CSS. Приведёт к ужасным воплям и массовым исходам на другие сервисы. Потому что люди привыкли.

Не приведет, если делать с умом. HTML-то санитизируется. Так что можно подменить ссылку на внешний CSS ссылкой на его внутреннюю санитизированную копию. Это совершенно прозрачно для всех участников. Еще можно по-всякому делать, было бы желание.

(Ответить) (Ветвь дискуссии)


[info]kukutz@lj
2006-01-26 10:11 (ссылка)
Это можно; но насколько часто надо такой CSS перечитывать? Понимаете проблему, да?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ex_ex_zhuzh@lj
2006-01-26 10:33 (ссылка)
Не чаще, чем показывается сам журнал, а то и реже (в соответствии с правилами кеширования). Нагрузка на внешний сервер при этом не увеличивается, а на ЖЖ-шный — увеличивается незначительно. В CS2 стили вообще генерируются на лету при каждом просмотре. Можно также дать пользователям возможность скопировать внешний CSS на ЖЖ-шный сервер и подправить урл в стиле по нажатию одной кнопки.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kukutz@lj
2006-01-26 10:36 (ссылка)
Вообще да, не знаю, почему так не сделали.

Вероятно потому, что санитайзер CSS написать не так просто, особенно с учётом всяких @import.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ex_ex_zhuzh@lj
2006-01-26 11:52 (ссылка)
Кто говорил, что будет просто? :) @import нужно рекурсивно закачивать и санитизировать, да.

Но я бы не стал полагаться на санитайзеры, а искал бы какое-то другое решение.

(Ответить) (Уровень выше)


[info]david_m@lj
2006-01-26 13:23 (ссылка)
Ну неужели сложнее, чем HTML? Там же гораздо более простой синтаксис. Ну, импорт, ну и что? Тянуть и импорт тоже, понятное дело. Не вытянулось — рубить эту директиву. Я почему-то уверен, что написать санитайзер для CSS гораздо проще (я уж про незаметность для юзера не говорю), чем сделать то, что мы наблюдаем в последнюю неделю.

Другое дело (я в это почти не верю, но вероятность такая есть), что мы можем сейчас наблюдать не просто затыкание конкретной дыры, а полное перелопачивание системы безопасности, которое давно назревало и которое, в перспективе, может дать юзерам больше возможностей. Тот же вопрос с разрешением JS или Flash.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kukutz@lj
2006-01-26 14:50 (ссылка)
Насчёт "гораздо более простой" ты, конечно, погорячился.

Взять те же бекслеши - про них я знаю, а мало ли какие ещё символы "незначащие".

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]david_m@lj
2006-01-27 06:03 (ссылка)
Но они же сделали фильтр HTML-я? Сделали. Ты же не будешь говорить, что это проще? Выяснить тонкости всяких экранирований — это максимум день целенаправленного гуглования и пара дней экспериментов.

(Ответить) (Уровень выше)


(Читать комментарии) -