sab123: (face)
SB ([personal profile] sab123) wrote2014-12-15 12:35 pm

XSS

А вот почему никто не рассматривает такое простое решение для атак cross-site-scripting:

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

Собственно, я бы очень хотел такое даже помимо XSS-атак.

[identity profile] amarao-san.livejournal.com 2014-12-15 09:31 pm (UTC)(link)
Как средство html - да, наверное. Но если скрипт из этого "сомнительного источника" напишет document.write() и заменит код от основного? Можно запретить - но это лишь расширение площади атаки (теперь не только xss, но и атаки на содержимое из "чужеродного" контента).

А уж про путаницу у пользователей и говорить нечего.

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

[identity profile] sab123.livejournal.com 2014-12-15 11:44 pm (UTC)(link)
Джаваскрипт в сомнительных кусках должен быть заведомо выключен. Это же вроде самое базовое фильтрование сомнительных кусков. Почему бы ему расширять площадь атаки - непонятно. Или уж если очень захотеть его включать, то пусть у каждого куска будет свой виртуальный документ, и кусок сможет менять только его. Вроде для фреймов сейчас точно так же сделано.

Путаница пользователей - это фигня. Вот невозможность весни несколько параллельных пользователей в разных окнах - это проблема. Приходится использовать разные браузеры для разных пользователей.

> Заметим, нужно не только изолировать страницу от "сомнительного контекста", но и изолировать сомнительный контекст от страницы

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