подозрительный чужой код
когда-то давно веб-разработчики захотели дать своим пользователям немножко свободы. Пусть, мол, они используют html для оформления своих текстов на нашем сайте. Некоторые плохие люди решили злоупотребить своей свободой, и так появился XSS. Разработчики пробовали от него защищаться, написали кучу библиотек, но их число, помноженное на число особенностей разных браузеров, достаточно велико, чтобы xss-дырки появлялись регулярно.
теперь веб-разработчики хотят большего. Теперь пользователям дадут в руки не только html, но и javascript. А это уже полный караул в плане безопасности. Нет, есть практически непробиваемый кроссдоменный барьер, но куча ифреймов на странице — это как-то неаккуратненько™, да и работает медленно.
проблемы возникают из-за того, что яваскрипт (да и любой другой язык, наверное) изначально не проектировался под разграничение полномочий исполняемого кода. Но, к счастью, он очень гибок, и теоретически можно попробовать пропатчить его прямо в браузере. Я пока знаю только об одной попытке добиться этого — Caja (читается «каха»).
«закахолить» (cajole) можно не всякий код, там много разных не очень приятных ограничений, но зато получившийся на выходе результат можно спокойно включать на свой сайт. По крайней мере, нам так говорят. Яваскрипт ведь реально очень гибкий, и куча его особенностей, помноженная на особенности браузеров и варианты caja-библиотек, скорее всего опять приведут нас к множественным уязвимостям.
тем не менее, команда разработчиков Yahoo решилась на это пойти. Я не разбирался в подробностях, но знаю, что их яваскриптеры с Дугласом Крокфордом во главе — параноики. А сейчас они используют Caja для сотен миллионов своих юзеров. Может и получится, посмотрим…