Расширение для блокировки скачивания exe файлов в Яндекс браузере
Расширение для блокировки скачивания exe файлов в Яндекс браузере

Как запретить скачивание exe файлов в браузере?

Чисто случайно решил очень интересный кейс о том, как заблокировать возможность загрузки .exe и .msi файлов в браузере. Дома в этом смысла нет, а вот в организации очень нужная и интересная история.

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

В чем суть? Зачем?

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

Мы опустим варианты, когда вредоносный код встраивают прямо в pdf, xls или doc, от этого уже сложнее защититься, да и это целая тема для отдельной статьи. Наша цель - запретить пользователю скачивать exe и msi файлы. Администратор всегда будет знать как разрешить.

Свое расширение для блокировки скачивания exe и msi файлов в Яндекс Браузере

И так, я решил написать расширение для Яндекс Браузера (подойдёт и для Google Chrome). Название не принципиально, поэтому написал Block Downloads.

Создаем папку Block Downloads, а в ней нужно будет создать три файла. 

Создаем файл manifest.json со следующим содержимым:

{
  "name": "Block Downloads",
  "version": "1.0",
  "manifest_version": 2,
  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "downloads",
    "<all_urls>"
  ],
  "background": {
    "page": "background.html",
    "persistent": true
  }
}

Далее создаем файл background.js со следующим содержимым:

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    if (details.url.endsWith(".exe") || details.url.endsWith(".msi")) {
      return {cancel: true}; // блокировка скачивания exe и msi файлов
    }
  },
  {urls: ["<all_urls>"]},
  ["blocking"]
);

И наконец-то создаем последний файл background.html со следующим содержимым:

<!DOCTYPE html>
<html>
<head>
  <title>Background Page</title>
  <!-- Здесь вы можете добавить стили или подключить дополнительные ресурсы, если это необходимо -->
</head>
<body>
  <!-- Содержимое фоновой страницы -->
  <script src="background.js"></script>
</body>
</html>

Код максимально простой, при чем настолько, что в нем сможет разобраться даже тот IT-специалист, который никогда в своей жизни не написал ни одной строчки кода. Ну и несложно догадаться как добавить другие форматы файлов для блокировки.

Установка нашего расширения в Яндекс Браузере из папки

Для начала открываем в Яндекс браузере страницу browser://extensions/

Устанавливаем расширение для блокировки скачивания exe файлов в Яндекс браузере

Откроется непривычная страница управления расширениями, в которой необходимо включить режим разработчика (бегунок справа сверху). Потом нажимаем на кнопку "Загрузить распакованное расширение" и указываем папку с нашим расширением.

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

Пробуйте скачать exe или msi файл, например, с github и эти попытки будут заблокированы.

Блокировка скачивания exe файла нашим расширением в Яндекс Браузере на Github

Обратите внимание на то, что тут указано "Страница заблокирована расширением", то есть всё работает идеально!

Алексей Черемных
1670