SQL инъекция WordPress и MySQL

Работа с БД WordPress и SQL-инъекции
Работа с БД WordPress и SQL-инъекции

Так или иначе, Вам придется изучать структуру WordPress, если Вы задумались об использовании данной CMS. Состав ядра, с какими функциями работает система и что из себя представляет БД MySQL.

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

Если Вы догадались, данная статья будет посвящена работе с базой данных MySQL и будут рассматриваться sql инъекции для wordpress. К слову, о втором мы поговорим чуть позже. Начнем статью с рассмотрения базы данных MySQL. БД является неотъемлемой частью ядра WordPress. Процесс взаимодействия и обмен информацией осуществляется с базой данных в автоматическом режиме без прямого взаимодействия с пользователями и администратором. Однако, Вы наверняка хотели бы подробнее узнать, каким образом WordPress хранит информацию. Данные сведения представляют интерес для разработчиков плагинов и расширений. И для тех, кто их любит устанавливать и править.

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

Внимание! Все изменения и правки в базе данных MySQL делаются на свой страх и риск. Могут возникнуть нарушения в работе WordPress. Создавайте предварительно резервную копию БД.

Не долго думая, я решил перенести неудачно опубликованный комментарий на нужную страницу. Для поиска нужного мне комментария, я обратился к базе данных сайта. Отыскал необходимую таблицу под названием wp_comments. В таблице находятся поля comment_post_ID. Значение ID нужно поменять на нужное, в соответствии с ID страницы. После нехитрых манипуляций и сохранения настроек, комментарий оказался на нужной странице.

Таблицы БД MySQL WordPress

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

При желании, можно не менять стандартное значение префикса wp_ во время установки. Если Вы решили устанавливать одновременно несколько сайтов на WordPress, для каждого задается в обязательном порядке свой собственный префикс.
Давайте рассмотрим стандартную структуру таблиц БД WP:

1. wp_commentmeta
2. wp_links
3. wp_comments
4. wp_postmeta
5. wp_options
6. wp_termmeta
7. wp_posts
8. wp_term_relationships
9. wp_terms
10. wp_usermeta
11. wp_users
12. wp_term_taxonomy

Если после ознакомления со списком выше, Вы заметили, что у Вас все иначе. Причин этому может быть несколько:

1) Вы установили новую версию ядра WordPress. При написании статьи рассматривалась версия WordPress 5.0. Я рекомендую устанавливать все обновления CMS, не стоит игнорировать уведомления системы.
2) Установлены какие-то плагины, взаимодействующие с базой данных блога. Некоторые из плагинов могут изменять таблицы, вносить правки в строки, добавлять поля.
3) Во время установки поменяли префикс wp_.

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

Теперь давайте вернёмся ко второму пункту, который я упоминал выше —sql инъекции для wordpress. SQL-инъекция — это дыры в защите сайта, которые используются злоумышленниками для создания враждебных SQL-запросов. Такой запрос способен изменить и даже нарушить работу сайта, через него можно получить доступ к важной информации. Атака выполняется на базу данных MySQL с целю изменения кода или проникновения в систему.

На данный момент система WordPress не имеет брешей в защиты с возможностью добавления SQL-инъекций. Разработчики постоянно отслеживают проникновения инородного кода на сайт, и своевременно добавляют правки в виде обновлений.

Меняем префикс БД для защиты от SQL-инъекций

Замените стандартное значение префикса wp_. Это позволит усложнить задачу для атакующей wordpress sql инъекции. Отредактировать префикс можно вручную на уже установленном сайте или при помощи расширения Change DB Prefix.