логин: 
Другие записи за это число:
2011/10/16 - Ереван: отчет первый
2011/10/16_1 - Попытаю я вас про JS
<< предыдущая заметкаследующая заметка >>
16 октября 2011
давайте еще поговорим про JS?

Температура 38, лежу в кровати с мобильником, делать нечего, размышляю. Ну никак не получается у меня выстроить концепцию сервера на одном домене. Ход мысли таков:

ДАНО: Авторизованный пользователь Вася Пупкин pupkin.binoniq.net зашел в блог соседа по серверу hacker.binoniq.net, где имеется (пока не выгнали) вредоносный JS-код. Это данность, которая не обсуждается. Вопрос в том, как сделать так, чтобы: 1) Хакер не смог украть васину авторизацию, 2) Хакер не смог заставить браузер Васи выполнить от имени Васи системные действия (оставить комментарий, например). Рассмотрим оба случая.

1) Авторизация у Васи — в куке, действующей для всего сервера *.binoniq.net Куку можно подсмотреть, но она привязана к Васиному IP, поэтому воспользоваться ею хакер не сможет. Если у Васи сменился IP — кука автоматически (незаметно для Васи) восстановится через переброску на служебный поддомен x.binoniq.net, для которого у Васи в браузере имеется вторая кука — не привязанная к IP, зато узкой видимости: только серверу x.binoniq.net. Разумеется, хакер может в своем аккаунте заставить браузер Васи открыть в iframe 1x1 этот x.binoniq.net, и даже, насколько я понимаю, получить средствами JS доступ к его содержимому (сервер-то родной). Но не к кукам ифрейма — window.[iframe x.binoniq].document.cookie браузер ему не покажет. Ведь не покажет же? Я правильно рассуждаю?

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

Иными словами, по 1 пункту я не вижу изъянов. Проблемы с пунктом 2.

2) Чтобы от имени Васи (и незаметно для него) хакер смог выполнить системное действие (например, оставить комментарий), ему достаточно с помощью JS заставить васин браузер послать соответствующий аякс-запрос на сервер, типа:

Ajax(«comment.php»,{action:«send_comment»,id:123,text:«Я СОШОЛ СУМА И ПЕШУ ХУЙНЮ»});

Чтобы это стало невозможным, я планировал любые системные действия выполнять в два этапа: сперва окно, затем действие. Открывается окно (форма редактирования, вопрос «удалить пост?» и т.п.). Это окно содержит также уникальный токен, без которого сервер не примет действие:

Ajax(«comment.php»,{token:8AC4D5F3E05D1,action:«send_comment»,id:123,text:...

Это работает, если всплывающее окно на странице распахивается так, что доступа к нему и его токену у хакера нет, например грузится в iframe с системного x.binoniq.net. Хакер может распахнуть перед Васиным носом форму написания нового комментария, но не более. Вася сперва удивится, затем пожалуется в поддержку и хакера закроем.

Проблема в том, что мне сейчас подумалось: если x.binoniq.net на родном сервере, то хакер имеет доступ к его содержимому — всякие там window.[iframe x.binoniq].innerHTML — и вполне может прочесть конструкцию var token="8AC4D5F3E05D1" или

<INPUT TYPE=SUBMIT VALUE=«ОТПРАВИТЬ» ONCLICK='Ajax(«comment.php»,{token:8AC4D5F3E05D1.........>

Разумеется, все это невозможно, если домен для системных операций делать абсолютно чужим: не x.binoniq.net, а binoniq.ru Но мне очень не хочется предлагать всем, кто захочет себе поставить движок сервиса, регистрировать два домена.

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

А вы?

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
Страницы, которые привлекли мое внимание за последние дни, рекомендую:
2017-11-22 В июне 1982
архив ссылок
Оставить комментарий
Linux Konqueror
18
7
Атиух (#1017602)
Есть очень простое решение: забыть все эти тормозные, усложняющие пользование ресурсом, нестандартные свистоперделки на AJAX и предоставить пользователю нормальные, старые добрые HTML формы и страницы, на которые всегда можно сослаться и которые не требуют передачи сотен килобайт на каждый клик.

О Сатана, куда катится интернет.
Nokia-E90 Safari
19
4
LLeo Nokia E90 (#1165175)
Разве вас уже забанили на всех сервисах, где используются веб-технологии прошлого века? Или вы мечтаете увидеть еще один проект-клон среди тысяч и тысяч подобных?

А ваши слова насчет "сотен килобайт" и вовсе обнаруживают полное непонимание. Идите в ЖЖ. Открыл пост с комментариями - 2мб. Нажал "написать комментарий" - загрузилась новая страница еще на 1мб. Нажал "отправить", получил страницу "ваш коментарий отправлен, вы можете его посмотреть здесь" - еще 1мб. Пошел туда - снова 2мб. Красота!

И фраза про "любую страницу, на которую всегда можно сослаться" великолепна. Особенно если вспомнить сайт Мегафона, где, как оказалось, можно сослаться на чужие формы написания СМС с их текстом. Прекрасны сайты, которые для любой системной операции грузят отдельную страницу, на которую можно отдельно ссылаться.
Linux Konqueror
10
8
Атиух (#1017602)
Достойных блог-сервисов я не знаю, хотелось бы увидеть хотя бы один. А что касается "веб-технологий нового века", то не только блог-сервисы, а уже каждый вебмастер локалхоста Вася, к сожалению, прочитал туториал по j_Query (охуенно, Леонид) и в полном обалдении от своей современности приделал к своему бложику всплывающую и громогласно пердящую форму для комментариев, требующую Core Quad и видеокарту с двумя слотами для питания для отсутствия тормозов.
Nokia-E90 Safari
9
2
LLeo Nokia E90 (#1165175)
Интересная логика. Значит, достойных блогосервисов вы не знаете (а их лишь в топе Яндекса перечислено 180 штук самых основных). Но при этом вам нужен блогосервис со "старой доброй" архитектурой. Что это? Тоска по ФИДО? :)

А ваше возмущение Jquеry я охотно разделяю - действительно тормозная штука, помогающая начинающим осваивать JS, который им без этого слишком был бы сложен.
Linux Konqueror
9
0
Атиух (#1017602)
Там перечислены не достойные сервисы а популярные. А народу нравится: 1. С многочисленное аудиторией (как жж) 2. С красивым аяксом шоб блестело и чтоб посты можно было копипастить из ворда / форматировать, тыкая в кнопочки, не утруждая мозг разметкой.

Так что мои вкусы с яндексовским топом не совпадают.
Windows Firefox
0
0
Прохожий (#1030622)
Blogger.com. Есть традиционная статичная страница (классический шаблон), есть свистоперделка на HTML5 (динамический вид).
Linux Konqueror
15
1
Атиух (#1017602)
> А ваши слова насчет "сотен килобайт" и вовсе обнаруживают полное непонимание. Идите в ЖЖ. Открыл пост с комментариями - 2мб. Нажал "написать комментарий" - загрузилась новая страница еще на 1мб. Нажал "отправить", получил страницу "ваш коментарий отправлен, вы можете его посмотреть здесь" - еще 1мб. Пошел туда - снова 2мб. Красота!

За страницы, которые весят 1мб, нужно отрывать руки вебмастеру и засовывать их в плечи. Тем более, если это страница "написать комментарий". А сейчас, если вы не в курсе, в LJ это заменили на кнопку "Expand" на аяксе, которые нужно каждую нажать, дождаться загрузки (прогресс которой нигде не показывается), а если загрузка не прошла, нажать еще раз. И так для каждой ветки. Ну а если отключился от интернета, то ложись и помирай, этих комментариев ты не увидишь. Лично мне проще было бы загрузить страницу на 1мб со всеми комментариями к посту. Тем более оверхед на сотню аяксозапросов будет побольше, о нагрузке на процессор я уже не говорю.

> И фраза про "любую страницу, на которую всегда можно сослаться" великолепна. Особенно если вспомнить сайт Мегафона, где, как оказалось, можно сослаться на чужие формы написания СМС с их текстом. Прекрасны сайты, которые для любой системной операции грузят отдельную страницу, на которую можно отдельно ссылаться.

На страницы с результатом POST-запросов (в которых нормальные люди отправляют содержимое формы) сослаться нельзя, никак. И я практически уверен, что эти GET-страницы там появились именно в результате увлечения их написателей красивыми формочками для ввода текста на основе "Современных веб-технологий". И жопоруких кодеров этих самые технологии не спасут.
Linux Firefox
7
1
LLeo
За страницы, которые весят 1мб, нужно отрывать руки вебмастеру и засовывать их в плечи.

С этим я абсолютно согласен, но это перпендикулярно вашей концепции статических страниц.

Статическая страница несет в себе все необходимое на все случаи жизни: скрытые меню, формы поиска, системы авторизации, логина-разлогина, формы написания комментария (и скрипты проверки его полей), и плюс вагон скриптов на все случаи жизни, и вообще все, что может понадобиться пользователю чисто теоретически.

На практике же 99% всех посетителей, загрузив конкретную страницу, не нуждаются на ней ни в форме поиска, ни в меню логина с выпадающими вереницами фейсбучно-гугловских иконок, и прочей фигне.

Я проектирую сайт таким образом, чтобы в странице не содержалось ничего лишнего, а все нужное подгружалось аяксом, если вдруг потребуется. Захотел человек сделать поиск по сайту или залогиниться? Пожалуйста, мигом подгрузилась с сервера нужная форма и нужные скрипты.

Вот вы думаете, что это желтое окно формы комментария находится в коде страницы? Отнюдь, там находится лишь команда majax('comment.php',{a:'comform',dat:1945}), которая подгружает его с сервера. А строчка "опции" в форме комментария - подгружает дополнительную панельку, которая большинству при написании комментария не нужна: majax('comment.php',{a:'loadpanel',idhelp:this.id}) И так далее. Слава богу, что современный интернет (даже мобильный) позволяет это делать мгновенно. Все, что не нужно на странице 99% посетителей, должно в коде отсутствовать, а грузиться по аяксу.
Linux Safari Chrome
5
0
Атиух (#1197466)
> Я проектирую сайт таким образом, чтобы в странице не содержалось ничего лишнего, а все нужное подгружалось аяксом, если вдруг потребуется. Захотел человек сделать поиск по сайту или залогиниться? Пожалуйста, мигом подгрузилась с сервера нужная форма и нужные скрипты.

А если челоно задержки при подгрузке всяких запчастей сайта все-таки ощутимы и я предпочитаю загрузить все сразу, нагрузка на процессор при этом гораздо меньше, а размером можно пренебречь. Тем более, каквек отключился от сети или у него нестабильное соединение? Придется сидеть без комментариев, поиска и прочего, а если что-то понадобилось, то подключаться.

Интернет, нынче, конечно, быстрый, все стерпит, но зачем экономить десять килобайт при загрузке страницы, чтобы потом дергать сервер на каждый чих (а задержка никуда не делась, и опять же AJAX-запросы никак не отслеживаются видимым пользователю образом), грузить процессор перелопачиванием тонн HTML?
Mac Safari
3
1
ArkanoiD (#1031711)
Кстати, ЖЖ очень нехватает простого html-интерфейса без всех этих красивостей.
Linux Firefox
1
1
LLeo
А что ты называешь красивостями?

В любом случае у меня в движке все красивости ограничены вот этими желтыми окошками системного интерфейса. Все остальное - на редкость некрасивое и целиком зависит от дизайнера и его темплейтов и css.
Windows Opera
 Обнинск
0
1
Wgent.com (#1016461)
Плюсуя, добавлю, что считаю неправильным и в корне небезопасным сам подход, при котором какие-либо действия от имени пользователя могут осуществляться без его явного согласия.
Linux Firefox
2
0
LLeo
А есть кто-то, кто считает иначе?
Windows Safari Chrome
 Киев
1
0
тот самый не робот (#1031966)
Сделать централизованный сервис для "второго домена".
А кто не доверяет, тот пусть регистрирует второй домен.
Nokia-E90 Safari
2
0
LLeo Nokia E90 (#1165175)
Центразизованный - в смысле, чтобы binoniq.ru автоматически обслуживал всех, кто захочет поднять свой сервис? Тогда что помешает хакеру проинсталлировать себе движок сервиса и пользоваться binoniq.ru, чтобы генерить токены для всех пользователей всех площадок, делая системные действия от их имени?
Windows Safari Chrome
 Киев
0
0
тот самый не робот (#1031966)
Каждому кто поднимет свой сервис, выделять отдельный поддомен на bininiq.ru
через регистрацию
Nokia-E90 Safari
3
0
LLeo Nokia E90 (#1165175)
Я не хочу делать систему централизованной. Завтра сервер взломают или опечатают - и что? Работа 10 блогосервисов и 100 частных страниц на движке окажется парализованной?
Windows Safari Chrome
0
0
Осторожный (#1028423)
Вот попалось: http://www.neocrome.ru/forums.php?m=posts&p=21530#21530
Флаг HttpOnly для cookies. Может это решит проблему (кроме Safari).
Есть уязвимости: http://raz0r.name/articles/httponly-bypass/ но может
быть для Вашего случая они не страшны?
Linux Firefox
6
1
LLeo
Боюсь, что для моего случая страшны любые уязвимости: если даже 1% пользователей подвержены риску, это уже не сервис, а дыра. Ну, пользователей IE6, я, разумеется, не считаю ;)

Честно скажу, что одна из причин, почему я хочу разрешить скрипты и железно изолировать авторизацию - это как раз чтобы впредь не париться и не изучать мегабайтные описания всевозможных хаков и уязвимостей.

Потому что иначе придется пару лет посвятить фильтрам пользовательского контента и затыканию всех дырок (при этом заткнется всё полезное, включая создание собственных дизайнов), и все равно в итоге окажется, что в каком-нибудь из модулей заметки какой-то пользователь догадался указать темплайт, в котором css, а в этом css команда border:IEexecCalculate(%10%20\\onmouseover="АЦКИЙ ХАК"), и пиздец, у половины пользователей теперь украдена авторизация.

Хочется дыру заткнуть глобально, а не маневрируя между описаниями существующих хаков.
Windows Safari Chrome
5
3
[email protected] (myid.config.php)
> Боюсь, что для моего случая страшны любые уязвимости: если даже 1% пользователей подвержены риску, это уже не сервис, а дыра. Ну, пользователей IE6, я, разумеется, не считаю ;)


Ты позволяешь себе не считать 9% пользователей (такова доля IE6, данные современные)? :-(

Пока ещё очень даже актуально проверять проекты на совместимость с IE6.

Меня, как раз, Гугл убил тем, что принудительно перестал поддерживать браузер, который нормально выполняет ВСЕ функции того же Gmail'а и YouTube.

IE имеет море проблем в принципе, любой. Версия - не главное, и нечего на ней ставить акцент.
Windows Firefox
5
7
Илья Весенний (#433679)
Их 9%, но они все сидят на dom2.ru и прочих сайтах для офисных работниц. Другими словами, у них заведомо не будет аккаунта на сервисе Леонида, поэтому и заботиться о сохранности их авторизации не имеет смысла :)
Linux Safari Chrome
1
0
LXj (#1031985)
Видимо, нужно всё-таки для каждого поддомена авторизовать пользователя отдельно, по принципу OpenID. Т.е. если Вася уже залогинен на pupkin.binoniq.net, то при заходе на hacker.binoniq.net он был неавторизован, но при этом для авторизации не надо было вводить логин/пароль, а достаточно было нажать на ссылку "авторизоваться" (или даже "оставить комментарий"). При этом браузер перенаправлялся бы на x.binoniq.net, который бы по своей куке убеждался бы, что это действительно Вася, и посылал обратно на hacker.binoniq.net

Так, к примеру, можно быть залогиненным в ГМейле, но не на Ютубе. В таком случае авторизация на Ютубе происходит в один клик, без ввода пароля (ибо оба используют авторизацию через accounts.google.com)

Вообще тот же гугл глобально всех авторизует на *.blogger.com, при том, что в шаблон своего блога можно вставить какой угодно JS. Но как они решают там проблемы с безопасностью, я не в курсе
Linux Firefox
1
0
LLeo
Как вы себе это представляете в реальной жизни?

Я даже не говорю о том, что пользователь будет ходить по чужим журналам вечно разлогиненный (а значит, не будет попадать в статистику посещений, не сможет оставить комментарий и т.п.).

Но что помешает хакеру написать document.getElementById('кнопка залогиниться').click() ?

Либо я вас не понимаю, либо вы не в теме совсем.
Linux Safari Chrome
0
0
ccrmc (#1177547)
а как пользователь будет ходить залогиненный по журналам а чужих доменах?

>Но что помешает хакеру написать >document.getElementById('кнопка залогиниться').click() ?

пользователя перебросит на форму авторизации (не аутентификации, а именно авторизации) на x.binoniq.net, которая спросит "бложик с домена хакерского хочет от вашего имени насрать в ленту" - дать/недать

посмотрите, как OAuth работает у всяких писькомерялок для твиттора.
Linux Firefox
2
0
LLeo
Боюсь, мы с вами совсем не понимаем друг друга. Полагаю, если один из нас (не важно, кто) потратит час на подробнейшие объяснения, что он имеет в виду, то второй догадается, что он имел в виду совсем другое и говорил о другом. Но я не думаю, что это рациональная трата времени для нас с вами.
Linux Safari Chrome
0
0
ccrmc (#1177547)
>Разумеется, все это невозможно, если домен для системных операций делать абсолютно чужим: не x.binoniq.net, а binoniq.ru Но мне очень не хочется предлагать всем, кто захочет себе поставить движок сервиса, регистрировать два домена.

но ведь проблема существует не для тех, кто регит *свои* домены, а для тех, кто использует домены на *вашем* хостинге, разве нет?

попробуйте рассмотреть ту же проблему, но вместо hacker.binoniq.net, подставить standalone-hacker-bioniq.net и отдельную инсталяцию движка на этом серверею
Linux Firefox
1
0
LLeo
И что? Я должен выйти и сказать "извините, дорогие пользователи binoniq.net, находиться у нас небезопасно для вашей авторизации, поэтому идите и сделайте себе собственный сервер, ибо только для разных серверов браузерная политика делает невозможной кражу авторизации"?
Linux Safari Chrome
0
0
ccrmc (#1177547)
на binoniq.net вам никто не мешает и два домена сделать, как раз.
Linux Firefox
2
0
LLeo
На Бинонике два домена: binoniq.net и binoniq.ru Я не понимаю смысла ваших советов. Решение на крайний случай (два домена) я и сам знаю. И всегда знал, потому сразу оба и завел когда-то. Вопрос в том, можно ли что-то придумать на одном домене. Если вы можете подсказать способ, как это сделать, либо научно доказать, что на одном домене это нерешаемо в принципе, буду благодарен. Если нет - какой смысл?
Windows Firefox
5
0
lesha (#437416)
он говорит что пока нет решения могут спокойно использоваться 2 варианта одновременно:
1) один домен для личных сайтов-движков, где нет проблем взлома отдельного пользователя, потому что пользователь ровно один.
2) два домена для сервисов, на которых живет куча людей - для сервисов это обычно не проблема. (домены вида пользователь.сервис.net/.ru, например)
Linux Opera
0
2
asan_13 (#1197252)
походу задача в том, что бы запретить чужому js делать send_message. я в js не специалист, но может там есть возможность определить, кто вызвал метод, что то типа caller в Perl
Linux Firefox
3
1
LLeo
Нет, задача не в этом.
Linux Opera
2
4
asan_13 (#1197252)
именно в этом, либо я вас не понимаю, либо вы не в теме совсем.(c)
Linux Firefox
2
0
LLeo
Я даже не понимаю, что вы называете "send_message".
Linux Opera
1
3
asan_13 (#1197252)
я так понимаю, проблема в том, что у Вас "куке, действующей для всего сервера *.binoniq.net". То есть, юзер lleo.binoniq.net, загрузит например uchduk.binoniq.net, на котором его злонамереные скрипты смогут вызвать гипотетическую send_message ( отправить камент ), и это пройдет - кука действует для всего домена. То есть надо и разрешить каментить чужие блоги... хммм... вроде как мне видится пока одно решение - про которое я написал.
Windows Firefox
3
1
Маркони (Micael1975)
Выздоравливай, дружище Леонид, желаю скорого выздоровления, пей побольше травяных чаев, чабрец, ромашка, малина, смородина и ежевика тебе в помощь, выздоравливай! :)))
Linux Firefox
7
0
LLeo
Спасибо. Мне мама только что принесла некую траву "саган дали" для травяного чая. Ей впарила какая-то торговка, сказав, что это чудесное природно-народное лекарство. Беглый поиск в интернете показал, что чудесная трава Саган Дали - из семейства рододендронов (они нейротоксичны), и много наших полегло. Вот типичный рассказ парня, который попал от этого травяного чая в больницу: http://forums.drom.ru/irkutsk/t1151292573.html В общем, вернул пакетик маме, да и мама тоже призадумалась. Природа - она такая природа... ;)
Windows Opera
0
0
semeyka (#1155623)
Эх, наши мамы. А я свою маму вижу раз в три месяца.

А по теме - ни хера не соображаю.
Windows Firefox
0
1
Маркони (Micael1975)
Просто сам периодически страдаю насморком, новомодные травяные чаи посылаю лесом, беру лишь из вышеизложенного списка, это не опасные травы однозначно, можете даже погуглить или потындексить, для успокоения души :)))
Windows Safari Chrome
0
0
ghan
Бодяжная сахан-даля, которой наверняка торгуют у вас в Москве, обычно с добавками багульника болотного, и пахнет противно. Настоящая пахнет сладко и лекарством не является - пейте на здоровье, Леонид.
Linux Firefox
1
0
Амон Ша (#1019185)
Я, конечно, слегка не в теме, но, если верить этому:
https://developer.mozilla.org/en/Same_origin_policy_for_Java[...]
и этому:
https://developer.mozilla.org/en/DOM/document.domain
то документы могут лезть друг к другу во внутренности только если оба на это согласились (явно установили document.domain в одинаковое значение)
Linux Firefox
1
1
LLeo
Я, к сожалению, плохо читаю на иностранном языке.

Из того, что я понял - это какие-то спецификации новых браузеров? Есть опасения, что старые их не поддерживают и не знают, что такое window.domain

А вот идея сменить протокол - она по-своему интересна. Скорее всего, доменные фичи были и в старых браузерах с самого начала. А настроить отвечать site.ru:81 все-таки проще, чем заводить второе доменное имя. Хотя...
Linux Firefox
2
0
Амон Ша (#1019185)
Вообще-то в первом линке написано, что это аж со времён второго нафигатора существует, так что ничего нового.

Тут вкратце на родном:
http://ru.wikipedia.org/wiki/Правило_ограничения_домена

А тут вроде неплохо о разных методах XSS:
http://javascript.ru/ajax/cross-domain-scripting#kross-domen[...]

ЗЫ Кириллица в УРЛах не нравится движку?
Linux Firefox
2
2
ру (#1019811)
Если вы хотите бороться с любыми уязвимостями, то начните с предположения, что хакер -- сотрудник провайдера Пупкина. И может посылать пакеты от его ip куда угодно и принимать тоже. Простого перехвата куки ему хватит.
Linux Firefox
2
2
Пётр (#1016705)
К чему? Всё равно против ZOG не поможет. :-(
Linux Firefox
17
1
LLeo
Как-то вы недостаточно глубоко в корень зрите. Сотрудник, провайдер, коллега, сосед... - где ваша фантазия? Начинайте прямо с предположения, что Пупкин и хакер - вообще одно лицо, и цель Пупкина - нанести себе максимум вреда.
Linux Firefox
7
3
Амон Ша (#1019185)
Найдутся ведь и такие — любители пострелять себе в ногу ;)
Windows IE
5
0
D.iK.iJ
Еще глубже! Леонид - хакер :))))
Windows Firefox
39
8
Мухин Алексей (#1020897)
Леонид, вопрос не относящийся к посту.
Вверху каждого комментария есть +/- понравилось не понравилось. У меня при наведении на них мышью стрелка меняется на стрелку изменения размера окна (вверх-вниз) - это так и задумано или особенность моей системы?
Linux Firefox
51
8
LLeo
задумано
Linux Ubuntu Safari Chrome
39
6
ASLok (#1037464)
Нажимая на плюсик, конвертик пропадает
Windows Firefox
4
1
я не впервые на сайте (#1053805)
Проезжая мимо станции, с меня слетела шляпа
Windows Safari Chrome
4
1
Mike (hist_kai)
1. Куку можно и просто сделать невидимой для JS.

2. Чтобы вредоносный скрипт не причинил бед, очевидно нужен уникальный токен, который нельзя получить никак иначе.

Например, это может быть дополнительная временная кука проставленная для сайта pupkin.binoniq.net, точно так же недоступная для JS. Иными словами, разделены авторизация и право на действие.

Оградить Васю от автопоста на самой странице hacker.binoniq.net - невозможно, в силу того, что скрипт может "распахнуть" окно коммента, вбить текст и сделать сабмит. Но это уже будут проблемы самого хакера, верно?
Linux Firefox
1
2
LLeo
Насколько я помню, невидимую куку поддерживали не все браузеры.

Оградить от автопоста запросто: если окно коммента открывается таким образом через frame, что оно на hacker.binoniq.net становится недоступным (хоть и на его странице), он никакой субмит сделать в нем не сможет. Вопрос именно в том, как сделать его недоступным, не прибегая к заведению второго домена.
Windows Safari Chrome
0
0
Mike (hist_kai)
Т.е. пользователь нажимает кнопку "комментировать", ему открывается iframe находящийся на другом домене и комментирование идет оттуда? Хорошо, тогда пусть при авторизации пользователя проводит через технический домен r.binoniq.net который получает свою уникальную сессионную куку. Получить ее средствами JS из домена hacker.binoniq.net невозможно, если я все правильно помню.

Альтернативный вариант "чтобы два раза не вставать" - техническим доменом может являться сам домен юзера. Т.е. весь пост идет только с его домена и кука разрешающая посты - тоже привязана только к его домену, а не ко всему binoniq.net
Linux Firefox
0
0
LLeo
Да, я думаю, сейчас соберу модельку и проверю потихоньку, как это будет работать в разных браузерах. Что-то мне помнится, что этот зоопарк не настолько предсказуем...
Windows Safari Chrome
0
0
Mike (hist_kai)
Кстати, про другие хранилища. У flash есть дивный SharedObject. Отличается от куки тем, что един для всех браузеров использующих flash.

Ситуация когда у пользователя одновременно два браузера и он оба их активно использует - не слишком часта, мягко говоря, но тем не менее.

Отдельный забавный момент - многие браузеры не умеют чистить это хранилище.
Windows Firefox
0
0
Reist
главное про такую атаку не забудь
http://en.wikipedia.org/wiki/Session_fixation
Attacks using cross-subdomain cooking

This is like cross-site cooking, except that it does not rely on browser vulnerabilities. Rather, it relies on the fact that wildcard cookies can be set by one subdomain that affect other subdomains
Nokia-E90 Safari
1
5
LLeo Nokia E90 (#1165175)
Боюсь, не сумею прочесть на иностранном. А на русском нет? О чем там хоть примерно?
Windows Firefox
1
0
Reist
тут процесс обратный, сессия не крадется, а ставится заранее.
http://www.securityscripts.ru/articles/PHP/session-fixation.[...]
зависит от того, насколько сильно у тебя все завязано конкретно на сессиях, хотя таким способом можно подменять вообще любые куки.
Nokia-E90 Safari
1
0
LLeo Nokia E90 (#1165175)
А, ну это не страшно. Я не использую встроенный механизм сессий PHP, у меня свои бубны.
Windows Firefox
1
0
murrmax (#417977)
от этого и должна (теоретически) спасать привязка к IP.
вектор атаки: хакер устанавливает для Васи куку на домен "*.binoniq.net", у Васи слетает авторизация. Вася заходит в свой бложег, логинится, у хакера есть кука и если он может послать запрос в блог Васи с того же IP, что и Вася (а он может, увы), то Вася будет песать хуйню
Windows Firefox
 Москва
8
3
Михаил
Леонид, огромное сорри за оффтопик в серьёзной теме.

Наберите "домашние биотуалеты" в Google прямо сейчас!
Windows Safari Chrome
1
0
Вип Вап (#1194432)
Уже третье.
Windows Firefox
 Москва
0
0
Михаил (#658242)
Я видел первое!
Windows Firefox
3
0
murrmax (#417977)
слишком всё сложно и всё равно не надежно.
а если хакер сидит с Васей в одном интернет кафе (коллега по работе решил пошутить)? привязка к IP пройдет и Вася сойдет с ума и будет песать хуйню
Nokia-E90 Safari
1
1
LLeo Nokia E90 (#1165175)
Есть еще IPx и версия браузера.
Windows Firefox
4
0
Pavel (#1184491)
Леонид, простой вопрос от тупого юзера - зачем при нажатии на клавишу вправо на последней странице блога страница обновляется и меня выбрасывает на её начало? Непомерно бесит, когда читаешь комментарии.
Nokia-E90 Safari
0
4
LLeo Nokia E90 (#1165175)
А вы машинально нажимаете клавишу вправо, пока читаете комментарии, или с какой-то целью?
Windows Safari Chrome
 Москва
2
0
Olorin (vivliofika)
с целью прокрутить вправо страницу, а не перейти на следующую заметку.
Windows Firefox
4
0
Pavel (#1184491)
с целью, чтобы прокрутить страницу с комментариями вправо, потому что она не вся вмещается в экран. А при этом меня выкидывают наверх - обидно!
Windows IE
2
0
bambr (#418829)
Лео! Выздоравливай дорогой,сам не люблю болеть,но вынужден сейчас сидеть с двумя спиногрызами,подозреваю коклюш. Кстати, может я что-то пропустил? У меня в компьютере "голосом обсоса",кто-то произносит цифры.На котировки акций не похоже.Полагаю, кто-то просто сообщает время.Это новая фича на твоем сайте или какая-то заразная хуйня? С приветом и пожеланиями выздоровления-мы.
Nokia-E90 Safari
2
0
LLeo Nokia E90 (#1165175)
Это сетевой коклюш! :)
Windows Safari Chrome
 Москва
0
0
Olorin (vivliofika)
это авторская запись. Ничего ты не понимаешь.
Linux Firefox
3
0
meequz
Нечаянно отправил коммент как новый. Это ответ LLeo в ветку, начатую Pavel.

Подтверждаю, бесит.
Когда вся страница не помещается в окне браузера, удобно нажимать стрелки, чтобы прокручивать её выше/ниже и правее/левее.
Linux Firefox
1
3
LLeo
Когда движок будет публичным, в своем блоге вы сможете назначать горячие клавиши самостоятельно.
Linux Firefox
6
0
centrist
все-таки это функция юзера, а не админа блога. А можешь сделать наоборот - что юзер мог выбирать клавиши во всех блогах на твоих движках?
Windows Safari Chrome
2
1
[email protected] (myid.config.php)
Леонид!

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

Браузерам нельзя доверять.
У них есть дополнения, и миллион компаний пишет всякую хрень, которая предлагает установить собственное дополнение ("Вы согласны установить наш тулбар для просмотра голых сисек Натали Портман?", как самый примитивный пример), которое будет резвиться на просторах браузера как угодно, игнорируя всю безопасность и любые стандарты, по которым, как ты думаешь, можно что-то надёжно накодить.

То есть, не может быть доверия вообще секюрити того же javascript, когда на стороне пользователя может стоять абсолютно всё, что угодно. Кривые бэты и дополнения - это ещё хороший вариант.

И не нужно думать, что пренебрежительно малое количество пользователей подвержено угрозам.
Один простенький вирус - и вместо "восстановления информации по данным браузеров пользователей" будет полная жопа.

Я уже молчу о том, сколько критически личной информации могут высрать браузеры при такой концепции распределённого хранения информации.
Для этого достаточно очень мелких и незаметных ошибок.

Не идиоты годами придумывали существующие системы.
Ты, я так понимаю, уверен, что идиоты, но это опасная иллюзия.


Остаётся, конечно, вариант, что ты специально создаёшь уязвимую систему. Вот только и от этого толку - ноль. Она сразу войдёт в список малваре в фаерволлах и антивирусах.


(Фух. Высрался. Даже не знаю, почему хотелось.)
Linux Firefox
2
1
LLeo
В чем смысл вашего воззвания?

Мы говорим о системе, которая строится на СТАНДАРТНОЙ политике безопасности, используемой во всех браузерах.

Если какой-то умник установил себе в браузер дополнение, нарушающее эту политику, и злоумышленник смог украсть ЕГО авторизацию - это его проблема. Будь как все, не ломай свой браузер.

А что касается восстановления информации из непроверенных источников - это всего лишь вопрос проверки подлинности, он решается хоть цифровой подписью.
Windows IE
0
0
D.iK.iJ
Кажется, у кук разная видимость для lleo.me, www.lleo.me, lleo.me/pupkin/ и pupkin.lleo.me

По крайней мере, куку поставленную в lleo.me/pupkin/ у меня не получается прочитать в pupkin.lleo.me. Чем не "другой" домен?
Windows Safari Chrome
 Москва
0
0
Olorin (vivliofika)
зона видимости куки настраиваема позонно. А вот корневые зоны несовпадающие приводят к полной нечитаемости. Так задумано.

всего комментариев: 128

<< предыдущая заметка следующая заметка >>