✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Очистка URL-адресов в WordPress

61

Работа с ориентированными на пользователя полями в WordPress, такими как inputэлементы, textareaэлементы или поля любого типа, в которые пользователь может вводить свои собственные значения, — это место, которое всегда должно быть целью очистки.

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

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

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

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

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

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

Можно быть очень агрессивным и просто сделать что-то вроде «Если это недействительный URL-адрес, не сохраняйте его».

И, чтобы было ясно, я не говорю, что действительный URL-адрес не возвращает 404 (потому что иногда страницы существуют, а годы спустя их нет). Я определяю действительный URL-адрес как правильно отформатированный и не содержащий никакой посторонней информации.

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

Для этого я считаю наиболее полезными следующие функции:

  • strip_tags. Удалите теги HTML и PHP из строки.
  • полоски. Отменяет кавычки строки в кавычках.
  • filter_var. Фильтрует переменную с помощью указанного фильтра.

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

  1. Проверка
  2. Санитарная обработка

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

Заставить это работать

Имея это в виду, вот как вы можете попытаться сохранить информацию в базе данных без какой-либо очистки (что плохо):

<?php
$data['url'] = 'https://tommcfarlin.com/<script type="text/javascript">alert('hello world!');</script>';

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

Итак, как выглядит применение приведенного выше кода при очистке URL-адресов? Вообще говоря, это выглядит так :

<?php

if (!isset($data['url']) {
   return '';
}

$url = $data['url'];
$data['url'] = strip_tags(
  stripslashes(
    filter_var($url, FILTER_VALIDATE_URL)) );

Во-первых, код проходит через фильтр PHP, который проверяет URL-адрес. Если строка, переданная в функцию фильтра, даже не работает как URL-адрес, функция вернет false.

Если, с другой стороны, он работает как действительный URL-адрес, тогда мы можем удалить любые косые черты, которые не нужны. Это означает, что мы можем «раскавычивать любые строки в кавычках». Точнее, это удалит первую последовательную обратную косую черту (потому что в PHP обратная косая черта используется для экранирования обратной косой черты). Чистый? 🙂

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

https://tommcfarlin.com/<script type="text/javascript">alert('hello world!');</script>

Вам останется:

"https://tommcfarlin.com/alert('hello world!');"

Итак, объединив весь приведенный выше код, используя эту строку:

https://tommcfarlin.com/<script type="text/javascript">alert('hello world!');</script>'

Приведет к следующему результату:

https://tommcfarlin.com/alert('hello world!');

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

Источник записи: tommcfarlin.com

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