Блокировать скрипты что это
Как защитить сайт от хакерских скриптов
Включите политику безопасности.
Недавно мы делали проект лапшеснимателя — он подсвечивал потенциальные манипуляции в тексте. Чтобы это был хотя бы минимально полезный продукт, мы должны были запускать скрипт лапшеснимателя на чужих страницах. И на одних сайтах всё запускалось без проблем, а на некоторых других скрипт не заводился.
Для нас как авторов скрипта это плохо. А для нас как веб-мастеров это интересно: можно ли защитить наши собственные сайты от взломов через скрипты?
👉 В этой статье мы разберём только один способ защиты. В жизни всё работает несколько сложнее и векторов атаки гораздо больше. Мы намеренно несколько упрощаем подачу.
Зачем нужна защита от вставки скриптов
Допустим, у нас есть сайт, который обрабатывает персональные данные пользователей: Ф. И. О. и номера телефонов. Часть этих данных получается и обрабатывается в JS-скрипте. Если немного изменить этот скрипт, можно обработать не только свои данные, но и получить данные всех пользователей сайта.
Чтобы изменить скрипт на странице или добавить в него новые команды, используют разные способы, например:
Каждый из этих способов может добавить на страницу свой код и выполнить её как бы от имени страницы сайта. Опасность тут в том, что обычно сайт доверяет тому, что делают его собственные страницы. Если от неё придёт запрос «Отдай мне список всех фамилий и телефонов» и сервер сможет это сделать — он это сделает, и список уйдёт в чужие руки.
Решение: политика безопасности контента
Чтобы защитить сайт и страницы от таких атак, придумали CSP — политику безопасности контента. Работает это так:
CSP может запрещать загрузку чужих:
Также политика безопасности может запретить обмениваться данными с любыми другими сайтами, которых нет в разрешённом списке.
Проще говоря, CSP — это фейсконтроль для любых данных, которые кто-то хочет добавить на страницу. Например, мы указали в политике, что картинки и скрипты можно загружать с нашего сайта. Когда злоумышленник попробует встроить на страницу другую картинку и свой скрипт, у него ничего не получится.
Покажите примеры
Получается, что для блокировки всех чужих скриптов на странице нам достаточно написать в политике безопасности:
Content-Security-Policy: script-src ‘self’
Если мы ещё доверяем серверам Яндекса и хотим встраивать их скрипты у себя на страницах (например, плагины Яндекс Музыки), то можем написать так:
Content-Security-Policy: script-src ‘self’ yandex.ru
Content-Security-Policy: default-src ‘self’
А как это использовать?
Чтобы вся эта магия работала, нам нужно сообщить браузеру о нашей политике безопасности. Это можно сделать несколькими способами.
Если у вас на хостинге стоит отдельный веб-сервер Apache, то в его конфигурационный файл httpd.conf можно написать так:
Header set Content-Security-Policy «default-src ‘self’;»
Настроить политику на уровне движка сайта. Например, у вас есть сайт на Вордпрессе или другой CMS, которая работает на PHP. Тогда мы можем добавить в модуль, который отвечает за сборку страницы, такую строку:
header(«Content-Security-Policy: default-src ‘self'»);
В этом случае у нас каждая страница, которую собирает движок, будет отправляться с нужными заголовками. Браузер их увидит и сделает всё, что там написано.
Вручную писать нужные параметры в метатегах внутри страницы. Это самый сложный путь — нам придётся написать теги внутри каждой страницы. Ещё один минус такого решения — теги не действуют на ресурсы, которые расположены на странице перед ним. Например, в разделе мы подключим скрипты и стили, расположенные на других сайтах, а потом напишем так:
В этом случае мы хоть и запрещаем загрузку любых ресурсов с чужих серверов, но на скрипты, написанные или подключённые до этой команды, это не влияет. Если злоумышленник сможет их подменить — защита не сработает.
И что, этого достаточно?
Нет, но это ещё один уровень защиты сайта от злоумышленников и хакеров. Вот несколько других инструментов:
И есть вещи, с которыми очень сложно бороться с помощью программирования, — например, фишинг и социальная инженерия. Но всё это темы для отдельных разговоров.
Что дальше
Дальше настроим политику безопасности на нашем учебно-боевом сервере и проверим, как она работает. Заодно посмотрим, какие ещё у неё есть важные параметры и как ими управлять.
Как заблокировать майнерские скрипты на веб-сайтах
Майнеры криптовалют на веб-сайтах стали реальной проблемой. Недавно даже The Pirate Bay начал тестировать такую опцию монетизации. Появились первые сервисы вроде Coinhive, которые агитируют владельцев сайтов устанавливать майнеры и зарабатывать деньги без баннеров и рекламы. По их расчётам, обычный посетитель сайта на среднем ноутбуке генерирует 30 хешей в секунду. Для The Pirate Bay со средним временем сессии 5 минут и месячной аудиторией 315 млн человек это даёт 30×300×315000000 = 2 835 000 мегахешей в месяц.
К сожалению, всё больше сайтов выбирают такой вариант монетизации. Иногда майнерские скрипты проникают на сайты без ведома самих владельцев. Одну такую историю недавно рассказал один из пользователей Хабра. Он случайно обнаружил майнер на маленьком российском сайте по продаже товаров для животных.
Хуже того, злоумышленники начали внедрять скрытые майнеры прямо в расширения для браузеров, так что они могут работать непрерывно, воруя вычислительные ресурсы компьютеры. Например, несколько дней через официальный Chrome Web Store распространялось расширение SafeBrowse с майнером, прежде чем его удалили. Для Firefox вышло два расширения с майнерами.
Естественно, нас подобная перспектива не радует. С точки зрения обычного человека главная проблема — как защититься от этих майнеров, чтобы они не нагружали процессор, не тормозили компьютер и не пожирали электроэнергию.
Пользователи блокировщика рекламы uBlock Origin уже несколько недель обсуждают проблему на GitHub и ведут список вредоносных доменов для блокировки. К сожалению, в последнее время майнерские скрипты начали случайным образом менять домены, так что так просто заблокировать скрипты не получится, если только вы вообще не запретите выполнение JavaScript в браузере.
Майнерский скрипт, который использует случайные домены, трудно заблокировать стандартными блокировщиками
Впрочем, скрипты с рандомными доменами пока редко встречаются. От большинства майнерских скриптов можно защититься, если заблокировать в hosts хотя бы самые популярные домены — и поддерживать список в актуальном состоянии, добавляя туда новые домены по мере их обнаружения. Недавно появилась бесплатная программка Anti-WebMiner, которая занимается именно этим: её авторы пополняют список майнерских доменов на GitHub, а сама программа добавляет эти домены в файл hosts.
Это можно делать и вручную. На данный момент список включает в себя 16 доменов, в том числе домен вышеупомянутого Coinhive, хотя он и позиционирует себя как легальный сервис для владельцев веб-сайтов:
# Anti-WebMiner Start 1.0 43011
0.0.0.0 azvjudwr.info
0.0.0.0 cnhv.co
0.0.0.0 coin-hive.com
0.0.0.0 gus.host
0.0.0.0 jroqvbvw.info
0.0.0.0 jsecoin.com
0.0.0.0 jyhfuqoh.info
0.0.0.0 kdowqlpt.info
0.0.0.0 listat.biz
0.0.0.0 lmodr.biz
0.0.0.0 mataharirama.xyz
0.0.0.0 minecrunch.co
0.0.0.0 minemytraffic.com
0.0.0.0 miner.pr0gramm.com
0.0.0.0 reasedoper.pw
0.0.0.0 xbasfbno.info
# Anti-WebMiner End
Хотя никто не мешает отредактировать hosts вручную, но с этой утилитой обновлять список доменов и вносить изменения в hosts быстрее и удобнее.
Список «запрещённых» доменов можно также вручную внести в программу-блокировщик рекламы, которой вы пользуетесь.
Есть и другие варианты блокировки майнерских скриптов. Например, расширение No Coin для Chrome (исходный код на GitHub).
Расширение No Coin обнаружило на сайте майнерский скрипт
Другое расширение minerBlock для Chrome работает по тому же принципу, что и No Coin. Оно тоже распространяется с открытыми исходниками, так что не придётся беспокоиться, что блокировщик майнеров сам втихую майнит криптовалюту.
Но всё-таки самый надёжный способ заблокировать майнерские скрипты — это установить расширение, которое вообще блокирует выполнение любых скриптов, как NoScript для Firefox.
Возвращаем приватность или большой брат следит за мной на стандартных настройках. Часть 2. Блокируем следящие скрипты на сайтах и настраиваем VPN
В первой части мы говорили об общих настройках для всех браузеров, вскользь прошлись по паролям, шифрованию и бекапе, а также несколько усложнили жизнь «Гуглу».
Сегодня посмотрим (и избавимся) на то, сколько статистики собирают на нас даже без использования сторонних «куки»-файлов и расскажем о пользе и настройке VPN простым языком.
Хочу сказать большое спасибо всем, кто оставлял комментарии в прошлой статье (и оставит в этой) — все ваши дельные советы будут включены в этот или последующий мануалы.
Ghostery
Мало блокировать сторонние «куки», пока вы загружаете сайт. Ваш «заход» могут анализировать десятки различных сторонних скриптов. Вот, например, что работает в фоне, когда вы заходите просто узнать погоду на «Гисметео»:
— AdFox;
— AdRiver;
— Gemius;
— Google Analytics;
— LiveInternet;
— Rambler;
— ScoreCard Research Beacon;
— SUP media;
— TNS;
— Yandex.Direct.
Что-то из этого может быть простыми счетчиками посещаемости, что-то предоставлять владельцам сайтов данные для профилирования (скорость загрузки страниц, ресурсов и т. д.), что-то работает на рекламные модули. Могут быть и полезные вещи типа Adobe Typekit, который подгружает сторонние шрифты, чтобы сайт отображался именно так, как его задумали дизайнеры, а не используя стандартные шрифты вашей системы.
К спорным относятся сторонние модули комментариев, если на сайте нет системы своих. Кто-то использует disqus и похожие, кто-то комментарии от «Контакта», кто-то от «Фейсбука». Спорность их заключается в том, что, если вы залогинены в одной из таких систем, то, формально, любое ваше перемещение на сайт, содержащий кнопки «лайка» или «комментариев», могут логироваться = «все ходы записаны». Поэтому вопрос, который встает перед вами состоит в следующем: либо блокировать на сайтах подобные модули (поверьте, вы ничего особо не потеряете + меньше будет желание, что-нибудь написать самому — то, что в будущем могут использовать против вас), либо серфить, не будучи залогиненым в соц. сети.
Крайне простым способом отключить описанное выше (как рекламные трекеры, так и различные модули) является расширение для вашего браузера Ghostery — настроим его.
Согласитесь, странно, говоря о приватности, отсылать какую-либо статистику использования, поэтому здесь мы отключаем ее, но включаем автоматическое обновление данных по трекерам.
Далее, по желанию, включим всплывающее на 15 секунд уведомление о том, что было заблокировано на каждой конкретной странице, однако в качестве обязательного показывать по клику эту информацию (пригодится, если нужно будет на время что-то разблокировать на странице), а также автоматическую блокировку элементов, которые придут с обновлениями из предыдущего пункта.
Блокируем по умолчанию всё, кромe Typekit by Adobe в разделе Widgets (те самые дополнительные шрифты на страницах):
Теперь, когда мы снова зайдем на «Гисметео», всплывающий бабл радостно расскажет нам о всей SEO-гадости, которую он заблокировал на странице:
По клику на кнопку привидения в панели с цифрой, отображающей количество заблокированного, появляются мини-настройки ↓. К слову, опишу значки на скриншоте хрома слева направо:
— похожий на «пакмана» с крестом — информация о том, что были заблокированы определенные сторонние куки (мы включили это поведение в предыдущей статье). На него нужно нажимать, что разрешить работу определенного стороннего куки на сайте (например, на habrastorage разрешить куки от хабра, чтобы иметь возможность залить картинку);
— следующие два — значок добавления в избранное и pocket для сохранения страниц в целях будущего прочтения;
— третьим идет расширение AdBlock, позволяющего блокировать рекламу на сайтах;
— далее описываемый сейчас Ghostery;
— и, наконец, расширение No History для Хрома. Как мы помним из предыдущей статьи, «Гугл» не дал возможности автоматической очистки истории спустя определенный период времени, принудительно заставляя нас собирать досье из посещенных страниц — данное расширение вообще отключает историю (Ctrl+Shift+T для открытия случайно закрытой вкладки при этом по-прежнему будет работать). Важно понимать, что подобные расширения есть не только для Хрома, но и для некоторых других браузеров (где-то и не все они нужны, например «Сафари» под маком позволяет включить автоматическое удаление истории, старее определенного периода).
Здесь вы можете узнать подробнее о каждом из заблокированных элементов (more info), а если вам нужно что-то разблокировать для конкретного сайта, нажмите на кнопку Edit Blocking Options и снимите нужные галочки (например, блок комментариев «Контакта», которые, однако, как уже говорил, лучше не включать, если вы залогинены под своим аккаунтом). В идеале, чистите после этого «куки» браузера, т. к. в них может набиться много разной дряни (хотя, вы же следуете совету из предыдущей статьи и настроили браузер так, что «куки» удаляются автоматически каждый раз, когда вы закрываете браузер).
Также полезно отключить плагины на всех сайтах (можно в настройках «Хрома» и последних билдах «Лисы»). Точнее, сделать их click-to-play, а именно нажимать мышкой на каждый (например, на флеш-видео) для его активации. Во-первых, сэкономите кучу трафика, во-вторых, безо всякого эдблока избавитесь от флеш-рекламы.
В прошлой статье тема VPN-соединения была упомянута лишь вскользь, но это не значит, что это какая-то не очень важная штука. Если объяснить простым языком, что это и с чем его едят, то это определенное защищенное от прослушки и перехвата окно в интернет. Представьте, что вы сидите где-нибудь в аэропорту и увидели своим ноутбуком/айпадом открытую Wi-Fi-сеть. Вы радостно к ней присоединитесь и даже не будете подозревать, что таким образом злоумышленник, сидящий в соседнем кресле, мог перехватить все ваши пароли, используемые в течении сессии. Сейчас многие устройства могут поднимать собственную Wi-Fi сеть, поэтому злоумышленник легко мог поднять WiFi на своем компьютере и шарить свой 3G-интернет, пропуская весь ваш трафик через себя (и, соответственно, делая с ним всё, что угодно). Защитится от этого можно, если вы используете https-протокол для захода на сайт (весь трафик шифруется). Но, во-первых, не все сайты его по-прежнему используют, во-вторых, не везде он включен по умолчанию (например, «Фейсбук»), в-третьих, подобные соединения недавно были скомпрометированы и, поэтому, не являются больше панацеей.
Защитой же от всего этого и является VPN-соединение. Весь ваш трафик шифруется и прогоняется через сторонний сервер, поэтому даже если этот трафик перехватят (вы подключитесь к непонятному Wi-Fi, или ваш роутер начнут «прослушивать»), он будет зашифрован и бесполезен для злоумышленников (понятное дело, что не на 100 % бесполезен, но, как минимум, придется сильно потрудится, чтобы что-то из этого извлечь).
В качестве бонуса, ваше местоположение (в плане IP-адреса) в интернете меняется с физического до того, где находится VPN-сервер, к которому вы подключились. Таким образом, например, можно видеть контент, который доступен только для определенных стран и не доступен из России. Однако, не стоит думать, что вас нельзя будет отследить — для этого нужно использовать другие технологии.
Распространены два типа VPN-провайдеров:
1. Первые предоставляют безлимитный месячный трафик, но только для одного устройства (т. е. одновременно нельзя использовать один аккаунт и на компьютеры, и на телефоны, если только это не дом, где вы настроили VPN на вашем роутере = защищены будут все клиенты, подключившиеся к роутеру).
2. Вторые дают возможность пользоваться на любом количестве устройств, но с ограниченной месячной квотой на пропущенный через сервера трафик (соответственно, чем больше трафика, тем дороже в месяц).
Если вы думаете, что это все сложно настроить, то вы ошибаетесь. Вот, например, инструкция по установке VPN от Cloak на айфон/айпад:
1. Качаете их приложение, открываете, входите под своим логином-паролем и нажимаете установить профиль.
2. Открывается специальная страница в браузере и на ваше устройство скачивается файл-настроек соединения. Соглашаетесь его установить.
3. Откройте настройки iOS, раздел «Общие — VPN». В списке профилей будет установлен профиль Cloak. Включаем VPN-соединение, передвинув слайдер VPN в положение On ↓ Всё, вы защищены.
Небольшой хак, о котором не все знают. VPN на айфоне/айпаде отваливается в случае блокировки (само заново не подключается). Однако все, что нужно, чтобы VPN само подключалось каждый раз, когда вы выходите в интернет, — это нажать на «стрелочку» в названии профиля и поставить галочку «Connect on demand» (подключаться в случае необходимости). В этом случае, каждый раз, как только какому-нибудь приложению нужно будет выйти в интернет, сначала будет устанавливаться VPN-соединение.
Также стоит сказать, что не всегда при нашем качестве мобильной связи удается установить VPN-подключение. В этом случае, «интернета» просто не будет до тех пор, пока вы не отключите VPN-соединение (которое телефон будет безуспешно пытаться установить). Однако помните, что и шифрование 3G уже сломали. К тому же, насколько мне известно (поправьте меня, пожалуйста, если я не прав), данные шифруются только до ближайшей станции. Т. е., получается, ничто не мешает злоумышленникам поставить в соседнем офисе мини-соту вашего оператора (это делается абсолютно легально, чтобы улучшить качество сигнала в офисе: нужен лишь более-менее быстрый интернет-канал к офисной антенне), к которой радостно присоединится ваш телефон и слушать весь ваш трафик (в т. ч. и голосовой). VPN в этом случае защитит хотя бы трафик (так что, отключая, не забывайте включить обратно).
Важно понимать, что в этом случае, например, у операторов не будут действовать опции бесплатного трафика для «Яндекс.Карт», т. к.трафик будет сначала до VPN-сервера, а оттуда уже до «Яндекс.Карт». Однако это не беда, т. к. что «Яндекс.Карты», что «Яндекс.Навигатор» наконец умеют скачивать на устройство локальную копию карт (т. е. весь трафик будет лишь на получение пробок и построение маршрута, что немного).
В следующей части поговорим о приватности в «Фейсбуке» и «Контакте». Судя по подобным комментариям в текущем посте, статья будет более чем кстати.
Расширение для блокировки скриптов в Google Chrome — ScriptBlock
Доброго времени суток, дорогие друзья, знакомые, читатели, почитатели и прочие личности.
Многие из Вас, надеюсь, помнят, что одной из ключевых дыр в безопасности Вашего компьютера являются разрешенные скрипты в браузере.
Я уже писал по этой теме не одну статью. Например в Firefox залатать подобную уязвимость позволяет расширение NoScript, а в Google Chrome некогда актуальным было такое решение как NotScripts. Но после того, как последний перестал поддерживаться, пришлось подыскать ему аналог, коим, собственно, я и хочу поделится с Вами.
Блокируем и разрешаем скрипты в Google Chrome при помощи ScriptBlock
Собственно, ничего сложного тут нет. Переходим на страничку с расширением в Google-маркете и жмём в кнопку » Установить «, а затем в кнопочку » Добавить «.
После установки у Вас появится вверху соответствующая иконка, нажав на которую (после перехода на какой-либо из сайтов), у Вас появится список разрешенных и заблокированных скриптов, а так же возможность управления ими.
Напоминаю как с этим взлетать:
На сим, собственно, всё. Каких-то особенных дополнительных настроек, в общем-то не требуется.
Послесловие
Благодаря сему чуду человеческой мысли проблем с вирусами, червями, всплывающими окнами, инсталляциями левых панелей для браузера, редиректами на другие сайты, попытками украсть Вашу информацию и прочей зловредной шушерой станет в разы меньше. Помимо всего прочего исчезнет куча всплывающих окон, редиректов, часть рекламы, увеличится скорость загрузки сайтов и перемещения по ним.
При грамотном использовании (это не так сложно) Вам больше почти не нужен будет антивирус. Это действительно нужный плагин для тех, кто заботиться о своей безопасности, безопасности своего компьютера и ценной информации.
Как и всегда, если есть какие-то вопросы, мысли, дополнения и всё такое прочее, то добро пожаловать в комментарии к этой записи.
Как запретить (разрешить) JavaScript в браузере Google Chrome
В данной статье показаны действия, с помощью которых можно запретить или разрешить выполнение сценариев JavaScript в браузере Google Chrome
JavaScript — это язык программирования, который используется для написания скриптов (программы сценарии на JavaScript). JavaScript используют большинство веб-сайтов, что делает сайты более интерактивными и функциональными.
Скрипты на JavaScript позволяют пользователям взаимодействовать с сайтами, например заполнять различные формы, просматривать всплывающие подсказки и выполнять другие различные действия.
По умолчанию в браузере Google Chrome разрешено использовать сценарии JavaScript.
Если поддержка JavaScript в браузере отключена, то интерактивные элементы сайта окажутся недоступными и содержимое веб-страниц будет ограничено. Предполагается, что таким образом пользователи могут контролировать свою безопасность в интернете. Поэтому, отключив выполнение сценариев JavaScript, можно ограничить возможности сайта.
Как запретить (разрешить) JavaScript для всех сайтов
Затем на следующей странице выберите JavaScript.
В окне «JavaScript» включите или отключите переключатель Разрешено (рекомендуется).
Как запретить (разрешить) JavaScript на определенном сайте
Затем в настройках сайта, в выпадающем списке JavaScript выберите соответствующий пункт: Разрешать (по умолчанию), Разрешить, Блокировать.
После того как сделаете выбор, чтобы применить к сайту новые настройки, перезагрузите страницу.
Как блокировать или разрешить JavaScript для определенных сайтов
В настройках браузера разверните список настроек нажав на Дополнительные и выберите Конфиденциальность и безопасность, а затем в правой части окна в разделе «Конфиденциальность и безопасность» выберите Настройки сайта.
Затем на следующей странице выберите JavaScript.
В окне «JavaScript», например чтобы блокировать выполнение JavaScript для какого-либо сайта, в секции Блокировать нажмите кнопку Добавить.
Затем в окне «Добавить сайт» введите url-адрес сайта и нажмите кнопку Добавить.
Таким образом можно блокировать или разрешать выполнение JavaScript определенным сайтам.
Используя рассмотренные выше действия, можно запретить (блокировать) или разрешить выполнение сценариев JavaScript в браузере Google Chrome