Який ризик?
На погано налаштованому спільному хості PHP кожного клієнта буде виконуватися як той самий користувач (скажімо, apache
для обговорення). Ця установка напрочуд поширена.
Якщо ви перебуваєте на такому хості та використовуєте WordPress для встановлення плагіна за допомогою прямого доступу до файлу, всі ваші плагінні файли будуть належати apache
. Законний користувач на тому ж сервері зможе напасти на вас, написавши PHP-скрипт, який вводить злий код у ваші плагінні файли. Вони завантажують свій сценарій на власний веб-сайт і вимагають його URL. Ваш код успішно порушений, оскільки їхній сценарій працює як apache
той самий, що і ваш файл плагінів.
Що це FS_METHOD 'direct'
стосується?
Коли WordPress потребує встановлення файлів (таких як плагін), він використовує функцію get_filesystem_method () для визначення способу доступу до файлової системи. Якщо ви не визначитеся, FS_METHOD
він обратиме для вас за замовчуванням, інакше він буде використовувати ваш вибір, поки це має сенс.
Поведінка за замовчуванням намагатиметься виявити, чи перебуваєте ви в небезпечному середовищі, як те, що я описав вище, і якщо він вважає, що ви безпечні, він використовуватиме 'direct'
метод. У цьому випадку WordPress створюватиме файли безпосередньо через PHP, приводячи їх до належності apache
користувачеві (у цьому прикладі). В іншому випадку вона повернеться до більш безпечного методу, такого як запрошення на отримання облікових даних SFTP та створення файлів як ви.
FS_METHOD = 'direct'
просить WordPress обходити виявлення ризику та завжди створювати файли за допомогою 'direct'
методу.
Тоді навіщо використовувати FS_METHOD = 'direct'
?
На жаль, логіка WordPress для виявлення середовища ризику є хибною і створює як помилкові позитиви, так і помилкові негативи. Уопс. Тест передбачає створення файлу та переконайтеся, що він належить тому ж власнику, що і каталог, в якому він живе. Припущення полягає в тому, що якщо користувачі однакові, PHP працює як ваш власний обліковий запис, і безпечно встановити додатки як цей обліковий запис. Якщо вони відрізняються, WordPress передбачає, що PHP працює як спільний обліковий запис, і не безпечно встановлювати плагіни як цей обліковий запис. На жаль, обидва ці припущення є освіченими здогадами, які часто будуть помилятися.
Ви б використовували define('FS_METHOD', 'direct' );
помилковий позитивний сценарій, такий як цей: ви - частина надійної команди, учасники якої завантажують файли через власний обліковий запис. PHP працює як власний окремий користувач. WordPress буде припускати, що це середовище ризику і не буде за замовчуванням для 'direct'
режиму. Насправді він ділиться лише з користувачами, яким довіряєш, і тому такий 'direct'
режим є безпечним. У цьому випадку вам слід використовувати, define('FS_METHOD', 'direct' );
щоб змусити WordPress писати файли безпосередньо.