Шестнадцать советов по безопасности для разработчиков плагинов и тем WordPress

Опубликовано: 2021-10-19

Никогда нельзя быть слишком осторожным!

Большая часть нашей работы как разработчиков заключается в обеспечении безопасности сайтов и плагинов, которые мы создаем.

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

С ростом сложности функций многие разработчики упускают из виду основные принципы безопасности разработки веб-сайтов и веб-приложений. Это приводит к повреждению веб-сайта, который открыт для кибератак и других рисков.

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

1. Выясните, какие данные нуждаются в защите

Один из наиболее важных принципов безопасности разработки веб-сайтов заключается в том, что вам нужно хранить только те данные, которые необходимы.
Когда вы разрабатываете проект, вам нужно задать следующие три вопроса:

  • Какие данные должна хранить компания?
  • Какие конфиденциальные данные компания должна зашифровать?
  • Если по какой-то причине данные будут скомпрометированы, насколько это может навредить компании?

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

2. Внедрить управление ролями и контроль доступа

При разработке веб-сайта, плагина или темы важно предоставить пользователям как можно более низкие привилегии.

Привилегии должны быть ограничены, чтобы пользователь получал только то, что ему нужно, и не мог получить доступ к другим областям.

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

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

Вот краткое графическое представление того, как выглядит структура.

Структура управления ролями и контроля доступа

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

Вам также необходимо ограничить доступ внутри команды разработчиков в зависимости от их роли.

3. Применить аутентификацию

Аутентификация веб-сайта — это процесс безопасности, который позволяет пользователям подтверждать свою личность, чтобы получить доступ к закрытым областям веб-сайта.

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

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

Двухфакторная аутентификация — один из самых популярных способов реализации аутентификации.

Двухфакторная аутентификация (2FA) — это двухэтапный процесс, в котором вам нужен дополнительный код или одноразовый пароль (OTP) для входа на ваш сайт помимо пароля вашего сайта. Этот OTP обычно отправляется на другое устройство с помощью текстового сообщения, телефонного звонка или признанного приложения 2FA, такого как Google Authenticator, Authy, Duo Security и многих других. Внедрение 2FA защитит вас от атак грубой силы.

Если вы создаете свой веб-сайт в WordPress, ознакомьтесь с этими невероятными инструментами, которые позволят вам защитить свой веб-сайт.

  • Ограничьте количество попыток входа: этот инструмент защищает вас от атак грубой силы, ограничивая количество попыток входа. Он также включает в себя защиту от спама и автоматический выход неактивных пользователей.
  • WP2 FA: Плагин WP2FA позволяет мгновенно добавить двухфакторную аутентификацию на ваш сайт. Он также поддерживает несколько приложений 2FA, таких как Google Authenticator, Authy, FreeOTP, Duo Security и некоторые другие.
  • Shield Security: этот плагин не поддерживает приложения 2FA, такие как Google Authenticator и SMS 2FA, однако он полезен для тех, кто использует YubiKey.
  • WPassword: этот плагин помогает вам применять надежные пароли для вашего веб-сайта WordPress, блокировать пользователей со слишком большим количеством неудачных попыток входа и многое другое. Он легко интегрируется с WooCommerce и другими сторонними плагинами.

4. Проверьте свою тему или плагин перед выпуском

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

Вот некоторые из рекомендуемых зависимостей для веб-сайтов WordPress:

  • Wpthemereview
  • Wp-стандарты кодирования

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

Эти инструменты отлично подходят, если вы разрабатываете собственную тему или плагин.

Вы также должны проверить сканер безопасности WPScan. Это отличный онлайн-сканер безопасности веб-сайтов, который проверяет ваш сайт на наличие уязвимостей.

5. Избегайте определенных функций PHP

Некоторые функции PHP, такие как eval() и unserialize(), могут раскрывать системные данные и могут привести к раскрытию данных сервера, что может привести к отключению сервера или доступу хакера ко всей информации о сервере.

Вот некоторые функции PHP, которых следует по возможности избегать:

eval() : eval может выполнять произвольный PHP-код. Это может подвергнуть ваши коды инъекционным атакам, если они не используются должным образом.

serialize() или unserialize(): не используйте serialize() или unserialize() с введенными пользователем данными. Злоумышленники могут использовать эти функции. Они могут передать строку с сериализованным произвольным объектом для запуска произвольного кода.

md5() : Интернет полон отзывов о слабостях криптографии md5() 1 и считается небезопасным. Используйте лучшую функцию хеширования, например SHA-2.

sha1() : sha1() — еще одна функция хэширования, которую не следует использовать из-за быстрого характера алгоритмов хеширования. Рекомендуется использовать алгоритм хеширования SHA-2 вместо md5() в любом современном фреймворке.

6. Используйте линтеры для поиска проблем в коде

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

Lint-коды — отличный способ найти потенциальные уязвимости и уменьшить количество ошибок при разработке веб-сайта или приложения. Вы можете использовать определенные линтеры безопасности для разработки PHP, JS и HTML.

Вот некоторые известные инструменты для статического анализа ваших PHP-кодов:

  • PHP-параллельный анализ
  • СонарЛинт
  • Псалом
  • PHP-линт

Вы также можете использовать SonarLint для линтинга HTML и Javascript.

Другие заслуживающие внимания линтеры JS:

  • JS Линт
  • ЭС Линт

7. Удалите неиспользуемый код и плагины

Со все более сложным программным обеспечением также увеличивается вероятность уязвимостей в коде. Темы и плагины WordPress ничем не отличаются. Постоянно растущие возможности таких кодов, как HTML5, CSS и JavaScript, позволяют разработчикам создавать многофункциональные веб-приложения.

Однако растущая сложность приложений — палка о двух концах. Хотя они помогают реализовать функции, ожидаемые пользователями, они также расширяют поверхность атаки приложения. Одной из мер по устранению такой уязвимости является удаление неиспользуемого кода.

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

Если вам нравится разрабатывать веб-сайты в WordPress, мы рекомендуем использовать темы и плагины, которые удовлетворяют ваши потребности, но при этом являются легкими с точки зрения их кода. Они не только защищают ваш сайт, но и помогают с поисковой оптимизацией. Вот некоторые из лучших легких и быстрых доступных тем WordPress.

8. Используйте проверку на стороне сервера и на стороне клиента

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

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

Однако одной проверки на стороне клиента в качестве меры безопасности недостаточно. Вам также необходимо использовать проверку на стороне сервера. Проверка на стороне сервера защищает вас от злонамеренного ввода и других векторов атак.

9. Дезинфицировать любой пользовательский ввод и запрашивать данные

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

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

10. Применение постоянных исправлений

Выполняя проверку безопасности, вы можете заметить некоторые уязвимости, которые время от времени появляются снова. Вам необходимо определить первопричину новых уязвимостей, чтобы вы могли навсегда их устранить, а не добавлять частичное исправление.

Например, очень часто вы можете столкнуться с проблемами SQL/XSS в теме или плагине, который вы разрабатываете. В таком случае вместо того, чтобы создавать проверку очистки для каждого ввода, создайте функцию/класс и сделайте ее политикой, согласно которой всякий раз, когда пользователь вводит данные, все данные должны передаваться через этот класс/функцию.

11. Избегайте неправильных настроек безопасности и настроек по умолчанию

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

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

Убедитесь, что установка по умолчанию безопасна, и не устанавливайте пароли автоматически (если требуется). Например, если плагин использует каталог, в который пользователи могут загружать файлы, всегда просите пользователей указать свои пароли и путь к каталогу.

12. Будьте в курсе и обновляйтесь

Кибербезопасность — это постоянно развивающаяся область. Вам необходимо быть в курсе последних обновлений безопасности и возникающих рисков, чтобы идти в ногу с разработками и устранять новые и возникающие угрозы в своем коде.

Как разработчик, это помогает быть в курсе новостей и писать более безопасный код, каковы передовые методы для безопасного кодирования, лучшей очистки кода и лучшей обработки пользовательского ввода.

Для этого следите за экспертами в Интернете и следите за новостями в своем любимом блоге веб-разработки. Вы уже читаете это. Итак, вы хорошо начали.

Вот некоторые из лучших ресурсов по безопасности WordPress.

  • Блог WP White Security
  • Блог WordFence
  • Блог Сукури

13. Поддерживайте код

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

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

Вы также можете использовать такие инструменты, как GitHub, для поддержки кода вашей темы или плагина. Это поможет вам отслеживать код и быстрее устранять проблемы. Безопасность всегда развивается. Чтобы идти в ногу с последними тенденциями, важно постоянно обновлять тесты безопасности, чтобы вы могли находить уязвимости и улучшать их.

14. Регулярно обновляйте пакеты программного обеспечения

Это не проблема.

Постоянное обновление программных пакетов, таких как PHP, Javascript, HTML и других, помогает решить новые проблемы безопасности. Повышение безопасности программного обеспечения всегда является постоянной задачей, и с этой целью мы всегда обновляем последние версии такого программного обеспечения.

15. Сотрудничайте со своей командой

Обратите внимание на билеты безопасности, которые были переданы вашей команде поддержки. Если ваши клиенты сообщают о каких-либо проблемах с безопасностью, сделайте их устранение приоритетом. Ваш конечный пользователь дает лучший отзыв о вашей работе, поэтому используйте его хорошо!

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

16. Подготовьтесь к худшему сценарию

Нельзя быть слишком осторожным. Сеть и все, что публикуется в сети, никогда не может быть защищено на 100%. Однако вы можете предпринять шаги, которые помогут снизить риски.

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

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

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

Последние мысли

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

Реальность такова, что вы не можете предотвратить все кибератаки или снизить все мыслимые риски. Ваша цель должна заключаться в том, чтобы сделать как можно больше с тем, что у вас есть, и постоянно пересматривать свой код, чтобы улучшить его.

Разработайте четкий план обеспечения безопасности своего веб-сайта и будьте готовы к худшему. Удостоверьтесь, что тикеты или отчеты, связанные с безопасностью, имеют наивысший приоритет.

Опубликуйте сообщение в блоге или объявление в своем сообществе о том, что вы выпустили исправление безопасности, чтобы все ваши пользователи могли обновить его и избежать компрометации своих веб-сайтов.

Кибербезопасность не сильно отличается от военной стратегии. Главное - готовность! Надеюсь, этот пост помог вам в подготовке. Сообщите нам в комментариях, какие меры вы принимаете для повышения безопасности вашего сайта.

Ссылки, использованные в этой статье [ + ]

Ссылки, использованные в этой статье
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C