Ишь ты, советник нашелся

Давеча пришел клиент со следующей жалобой: «Пользователи ставят расширение Советник.Яндекс и уходят на сайты конкурентов, следуя за более низкой ценой». TL;DR:

  • Настройте CSP-заголовки
  • Настроили? Ужесточите политики. И правда, при переходе на страницу товара с включенным расширением, происходил рендеринг спец. желтой панельки в шапке страницы с дополнительными предложениями. Достаточно возмутительно, вы не находите? Однако, бороться с этим можно. Надо лишь настроить Content Security Policy. Это политики безопасности контента, кто не в курсе. Так я и сделал. Полез на один из своих сайтов и оттуда скопировал преднастроенные доп. заголовки для типа содержимого HTML в MODX на сайт клиента. В огнелисе все прекрасно заработало (т.е. сломалось), но в хроме ситуация была немного иная. Желтая панель пропала; при клике на иконку расширения, оно продолжило «давать советы» в отдельной модалке. Если вы разрабатывали расширения для хрома, то знаете, что под каждый аддон хром выделяет отдельный процесс в котором расширение может выполнять собственные скрипты. Это если на пальцах. Очень крутая фишка. Пришлось немного подробнее почитать про CSP и поэкспериментировать. В доке (https://content-security-policy.com/) и спеке (https://www.w3.org/TR/CSP2/#directive-sandbox) я наткнулся на директиву sandbox. Достаточно еще больше ужесточить политики, убрав значение allow-same-origin. Теперь сайт запустился в «песочнице» и Яндекс больше не смог ничего посоветовать. Здесь стоит отметить, что придется проверить работоспособность скриптов и произвести доп. настройки: Вся статика и ответы сервера должны отдавать заголовок Access-Control-Allow-Origin '*'; Если вы работе с canvas, то изображения, что рисуются, должны иметь свойство pic.crossOrigin = «Anonymous»; Возможно есть еще кейсы по доп. настройкам. Я больше проблем не встретил. Примеры политик также можно найти по первой ссылке. Там все достаточно подробно описано. Также набросал специальный пакетик: modCSP. Он патчит типы содержимого, добавляя используемые нами политики. Появится на выходных в репозитории клуба.