Учора я поділився дописом про те, як використовувати, wp_remote_get
але залишив альтернативну функцію: wp_safe_remote_get
. Початкова мета полягала в тому, щоб використати першу публікацію, щоб показати:
- Що приймає оригінальна функція,
- Як використовувати оригінальну функцію,
- Що повертає оригінальна функція,
- Як виглядає реалізація.
А потім я збирався поглянути на wp_safe_remote_get
. Але є проблема: у мене є розумні друзі. Незабаром після того, як я опублікував допис, я отримав відповідь від Роя :
Дякую, Рой! (Обов’язково скажіть йому «Привіт!». 🙂
Але серйозно, продовження вчорашнього допису полягає саме в тому: wp_safe_remote_get
. І це те, як визначити різницю між двома функціями та коли ви використовуєте одну над іншою.
wp_safe_remote_get
Прямо з документів API ми дізнаємося :
Ця функція ідеальна, коли запит HTTP надсилається до довільної URL-адреси. URL-адресу перевірено, щоб уникнути переспрямування та атак підробки запитів.
І, подібно до свого аналога, він приймає URL-адресу та серію аргументів, які можуть вказати, як робиться запит.
Крім того, як і wp_remote_get
, він також повертає масив даних відповіді або екземпляр, WP_Error
якщо запит не вдається.
Використання цієї функції не відрізняється від використання попередньої, але викликає запитання:
Коли ми використовуємо одне замість іншого? Точніше, коли ми використовуємо wp_remote_get
versus wp_safe_remote_get
?
Читайте Джерело
Коли ви зіткнулися з такою ситуацією, перше, що краще зробити, це прочитати джерело:
Якщо ви прочитаєте посилання вище, ви помітите, що останні відхиляють «небезпечні URL-адреси», які визначаються wp_http_validate_url за допомогою серії розширених перевірок.
Але все ж, який я використовую?
Це все ще залишає питання без відповіді, чи не так? Я думаю, що легко зробити загальне твердження, що ви завжди повинні використовувати wp_safe_remote_get (або wp_safe_remote_post, якщо на те пішло).
Але всі проекти різні.
Наприклад, якщо ви працюєте над плагіном, який використовуватиметься лише в інтрамережі, і ви маєте контроль над, скажімо, білим списком URL-адрес, які можна передати у функцію, тоді ви можете використовувати перший.
Проте, якщо ви відкриваєте останню для користувачів, завжди використовуйте безпечну версію функції.
Коротко
Моє емпіричне правило таке (і воно схоже на санітарну обробку):
Якщо користувачі збираються взаємодіяти з функцією, переконайтеся, що вони взаємодіють із найбезпечнішою версією коду.
Інакше ризикує занадто багато.