Защита от XSS путем добавления )]}' перед ответом ajax

Google plus возвращает запросы ajax с )]}' в первой строке. Я слышал, что это защита от XSS. Есть ли примеры, что и как можно было сделать с этим без этой защиты?


person genesis    schedule 12.07.2011    source источник
comment
Связано: странный ответ JSON в Google Plus   -  person dtb    schedule 13.07.2011
comment
Именно об этом вопросе я и говорил, я слышал, что это защита от XSS   -  person genesis    schedule 13.07.2011
comment
это должен быть новый вопрос? Вы можете получить больше информации в другом вопросе...   -  person Rory Alsop    schedule 13.07.2011
comment
да должно. Я хочу ПРИМЕР действия хакера   -  person genesis    schedule 13.07.2011


Ответы (2)


Вот мое лучшее предположение о том, что здесь происходит.

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

Использование этого соглашения также означает, что поток данных не будет выполняться ни вызовом из тега скрипта, ни интерпретацией javascript непосредственно из eval(). Это гарантирует, что разработчики переднего плана пропустят контент через анализатор, который предотвратит выполнение любого внедренного кода.

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

  1. существует ошибка в том, как пользовательские данные экранируются и
  2. он используется таким образом, что позволяет злоумышленнику внедрить код в один из каналов данных.

В качестве простого примера предположим, что пользователь понял, как взять строку типа example

["example"] 

и изменил его на "];alert('example');

[""];alert('example');"]

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

В сценарии Google эти атаки не сработают по ряду причин. Первые 5 символов вызовут ошибку javascript перед запуском кода атаки. Кроме того, поскольку разработчики вынуждены анализировать код вместо того, чтобы случайно запускать его через eval, эта практика в любом случае предотвратит выполнение кода.

person Jason Striegel    schedule 13.07.2011

Как говорили другие, это защита от межсайтового скрипта Inclusion (XSSI).

Мы объяснили это в Gruyere следующим образом:

В-третьих, вы должны убедиться, что скрипт не является исполняемым. Стандартный способ сделать это — добавить к нему неисполняемый префикс, например ])}while(1);. Сценарий, работающий в том же домене, может прочитать содержимое ответа и удалить префикс, но сценарии, работающие в других доменах, не могут.

person methode    schedule 13.07.2011