Статьи

Проверка данных с помощью WordPress

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

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

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

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

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

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

Вывести как целое число

Если у вас есть переменная в PHP и вы хотите убедиться, что она всегда будет целочисленной, то у вас есть две опции: вы можете использовать функцию PHP intval ($ int) или преобразовать переменную в целое число, используя (int) $ int.

intval( $int );
echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34
echo intval('042');                   // 42
echo intval(1e10);                    // 1410065408
echo intval('1e10');                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1

(int) $int

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

Вывод как поплавок

Если вы хотите проверить, является ли значение переменной плавающей точкой, вы можете использовать функцию PHP floatval ($ float) .

$var = '122.34343The';
$float_value_of_var = floatval($var);
echo $float_value_of_var; // 122.34343

Или вы можете привести значение, используя (float) приведение.

$var = '122.34343The';
$float_value_of_var = (float) $var;
echo $float_value_of_var; // 122.34343

Проверить элементы HTML

Когда вам нужно убедиться, что выходной HTML-элемент со стороны сервера сформирован правильно, вы можете использовать функцию WordPress wp_kses () . Эта функция гарантирует, что в строке разрешены только разрешенные элементы HTML, имена атрибутов и значения.

Функция wp_kses вызывается с 3 параметрами.

  • $ string — Предоставленная строка для проверки.
  • $ allow_html — Массив разрешенных элементов HTML.
  • $ allow_protocols — это необязательный параметр доверенных протоколов.

Кодировать текст для текстовой области

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

WordPress поставляется с функцией esc_textarea ($ val), которая используется для экранирования текста для использования внутри текстовой области.

Побег HTML-атрибуты

При отображении полей ввода со стороны сервера будут моменты, когда у вас есть динамические атрибуты HTML, такие как имя, идентификатор, значение, класс. Используя функцию WordPress esc_attr ($ val), вы можете убедиться, что значения, добавленные в атрибут HTML, экранированы специальными символами.

<?php echo '';  ?>

Если вам нужно повторить возврат этой функции, рекомендуется использовать функцию esc_attr_e () .

Escape Javascript

Если вам нужно вывести Javascript внутри атрибута onclick, то значения, которые вы вводите в этом, должны быть экранированы.

WordPress поставляется с функцией esc_js ($ val) , которая будет экранировать одинарные кавычки, htmlspecialchar «& и исправлять окончания строк.

Escape URL

Когда вам нужно экранировать URL, вы всегда должны использовать функцию esc_url () . Эта функция гарантирует, что предоставленный URL-адрес имеет принятый протокол, удаляет недопустимые символы и кодирует специальные символы, чтобы быть действительными для URL-адресов.

Функция esc_url должна использоваться при отображении URL-адреса в текстовом поле, входном атрибуте или на странице. Если вы хотите сохранить значение в базе данных или использовать URL для перенаправления пользователя, вы должны использовать функцию esc_url_raw () .

Продезинфицировать строку

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

Используя функцию WordPress sanitize_text_field ($ val), он очистит входные данные и вернет безопасную строку для хранения в базе данных.

$safe_string = sanitize_text_field ($val);

Очистить строку для URL

Когда вы создаете новый пост в WordPress, он берет заголовок поста и очищает его для использования в URL поста. Для этого в WordPress есть функция sanitize_title (), которая будет принимать строку и будет возвращать URL-адрес строки.

Эта функция удалит все теги HTML или PHP и заменит все пробелы дефисом.

$new_url = sanitize_title('Wordpress will convert this to be used in the URL of the post');
echo $new_url; //wordpress-will-convert-this-to-be-used-in-the-URL-of-the-post

Очистить имя класса HTML

Если вам нужно распечатать имя класса HTML, вы должны использовать функцию sanitize_html_class () . Эта функция гарантирует, что в имени класса HTML нет недопустимых символов.

echo '
<div class="' . esc_attr( sanitize_html_class($post_class) ) . '">';

Очистить имя файла

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

Sanitize Email Address

Чтобы убедиться, что адрес электронной почты содержит только допустимые символы, WordPress имеет функцию sanitize_email (), которая гарантирует, что адрес электронной почты не содержит недопустимых символов.

Подтвердите адрес электронной почты

Чтобы проверить, что входной адрес электронной почты является действительным адресом электронной почты, WordPress имеет функцию is_email () . Это вернет логическое значение true, если адрес электронной почты действителен.