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

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]kukutz@lj
2006-01-26 08:21 (ссылка)
Ссылки нет, это мой вывод на основании изучения
http://brad.livejournal.com/2191154.html
и
http://www.davidpashley.com/cgi/pyblosxom.cgi/computing/livejournal-mozilla-bug.html

Как можно стереть журнал внешним CSS?

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


[info]zmey2@lj
2006-01-26 08:25 (ссылка)
ага, спасибо

джаваскриптом можно изменить статус журнала например
или стирать по одной записи

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


[info]kukutz@lj
2006-01-26 08:27 (ссылка)
Как?
Насколько я знаю, все формы в ЖЖ защищены от CSRF. Или что имеется в виду?

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


[info]zmey2@lj
2006-01-26 08:31 (ссылка)
Мне надо подготовиться к ответу на этот вопрос :)
френдов было можно добавить полгода назад, возможно сейчас что-то изменилось

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


[info]kukutz@lj
2006-01-26 08:34 (ссылка)
Буду благодарен за ответ. Можно почтой, если не хочется светить.

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


[info]drdaeman@lj
2006-01-26 10:07 (ссылка)
Дык, в общих словах говоря - AJAX'ом поработать. Теперь, слава Богу, не получится, разделение печенюшек по доменам не даст, а раньше можно было всё что угодно делать.

Вот, гуглем нашлось практически сразу же: http://community.livejournal.com/evan_tech/150019.html
Хотя как XMLHttpRequest ведёт себя с HttpOnly cookies я не знаю, сам не пробовал никогда. Говорят, работает.

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


[info]kukutz@lj
2006-01-26 10:13 (ссылка)
Насколько я понимаю, в ЖЖ есть anti-CSRF, который заключается в том, что разными способами проверяется, что полученные данные пришли из формы, заполненной пользователем, а не скриптом.

Разве это не так?

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


[info]drdaeman@lj
2006-01-26 10:35 (ссылка)
lj_form_auth стянуть заранее со страницы несложно, challenge-response не проблема значит. С Referer сложнее, у меня только под Firefox получилось, там спокойно сработало xmlhttp.setRequestHeader('Referer','...'). Но под Fx уже бы журнал удалился — хэдеры есть, форма есть — уже не отличить от обычного запроса. Но вообще ошибся, AJAX, значит, не решение тут.

Впрочем, ещё сейчас появилась мысль создать скрытый фрейм и в нём поиграться с DOM, просто «нажав» кнопку удаления за пользователя. Кросс-доменные вопросы нас не должны были беспокоить, а вроде бы больше ничего и не остаётся в такой схеме… =/

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


[info]kukutz@lj
2006-01-26 10:39 (ссылка)
Да уж. Неприятно.

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


[info]trezub@lj
2006-02-26 09:38 (ссылка)
а как стянуть lj_form_auth? Сейчас бьюсь над автоматическим добавлением во френды... пока не сильно получается :(

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


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