Любой начинающий программист рано или поздно задается вопросом, что такое Whitelist и что такое Blacklist. Не важна сфера программирования — будь то веб-дизайн, создание сайтов, создание приложений, работа с базами данных или программирование игр. Как понятно из простого перевода с английского Whitelist — это белый список, а Blacklist — это черный список чего-то. Данная технология придумана в первую очередь для обеспечения стартовой безопасности вашего проекта. «Белый список» разрешает что-то. «Черный список» запрещает что-то.
Что такое WhiteList в программировании?
Приведем самый простой пример использования «Белого листа» в программировании. Может так получиться, что, реализовав свой проект, вы столкнетесь с необходимостью загружать какие-нибудь файлы на ваш сервер. Этими файлами могут быть:
- фотографии к учетной записи пользователя;
- какой-нибудь текстовый документ;
- аудио или видео файл;
- в принципе, что угодно.
В таком случае при загрузке файлов на сервер есть расширения файлов, которые «нежелательны» (к примеру, при работе с сервером Apache + PHP лучше ограничить загрузку файлов с расширением «.php», потому что это может повлечь непредсказуемые результаты). Также в число «нежелательных» могут попасть любые малознакомые форматы и расширения файлов, которые опять же могут непредсказуемо обрабатываться вашим сервером.
В такой ситуации Whitelist или Blacklist — это то, что спасет ситуацию. Потому что при написании программы, которая будет отвечать за корректную выгрузку файлов на сервер, можно будет задать проверку расширения загружаемых файлов по вашим спискам. Если это будет Whitelist — значит, программа будет осуществлять проверку среди списка разрешенных расширений файлов. Соответственно, если расширение будет найдено в списке, то загрузка будет разрешена. Если это будет Blacklist — значит, проверка будет осуществляться среди списка запрещенных расширений файлов. Соответственно, если расширение будет найдено в списке, то загрузка будет запрещена.
Как понятно из вышесказанного, основная функция и цель Whitelist и Blacklist в программировании — это осуществление и анализ первоначальной безопасной работы вашего проекта.
Whitelist — последние изменения в использовании
В последнее время наметился тренд отказываться от терминов «whitelist» и «blacklist», но не от самой технологии использования. Данные термины негласно признаны политически некорректными и расистскими, по сути обозначающими: «белое — можно, черное — нельзя». Поэтому многие западные компании начали заменять данные термины более нейтральными аналогами:
whitelist— превратился в «allowlist» (список разрешений);
blacklist — превратился в «blocklist» (список для блокировки).
Также были заменены термины «master» (хозяин) и «slave» (раб). Среди первых компаний, начавших модерацию терминов, засветились такие гиганты, как Google, Twitter, разработчики языка Go, разработчики движка Drupal, разработчики рабочей среды для веб-приложений Django, системы управления базами данных Redis и CouchDB и др.
По словам разработчиков, использующих замену этих терминов, сам процесс — это не повод для дебатов об этих терминах, это их собственная политика корректности. Они считают, что замена любых подобных терминов необходима, если есть люди, которых они могут задеть или обидеть.
В наших «постсоветских» странах пока такая тенденция слабо заметна. У большинства разработчиков Whitelist — все тот же «белый список» для «разрешенного», что не мешает им создавать интересные, современные и популярные проекты.
Другое