✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Очищення URL-адрес у WordPress

14

Робота з орієнтованими на користувача полями в WordPress, такими як inputелементи, textareaелементи або будь-які типи полів, у які користувач може вводити власні значення, є місцем, яке завжди має бути метою очищення.

На щастя, WordPress API надає ряд функцій, які допоможуть у цьому. Залежно від вашого випадку використання вам може знадобитися виконати одну з наведених нижче дій.

І все це добре, але є також способи, за допомогою яких ви можете працювати над дезінфекцією даних за допомогою функцій, наданих 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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі