Як знайти усі входи, які використовують фільтр вводу php, щоб повністю відключити модуль фільтра для php?


10

Я хочу відключити модуль фільтра PHP на великому веб-сайті, але проходження всіх вузлів, блоків та інших полів, де ви могли б скористатися фільтром php, зайняло б еони.

Чи є простий спосіб чи метод, можливо, запустивши SQL запити, щоб дізнатися, де використовується фільтр php на моєму веб-сайті?

Відповіді:


9

Замість того, щоб заново створювати колесо, просто встановіть модуль перегляду безпеки , який має наступну перевірку:

PHP або Javascript у вмісті (вузли та коментарі та поля в Drupal 7)

Для блоків можна перевірити стовпець формату в таблиці block_custom.

Важкою є "Перегляди" - я ще не знайшов надійного способу програмувати шахрайського PHP у програмах Views.


1
Я думаю, якщо хлопці з Security Review не змогли додати надійну перевірку для Views, це може бути просто неможливим.
Молот

@ Mołot: Щойно знайшов спосіб отримати погляди, на яких увімкнено функцію php, будь ласка, дивіться мою відповідь нижче. Буде чудово знати, що у неї є будь-які зворотні сторони чи крайові випадки ...
Аніл Сагар

1
Все, що я отримав - це "OK Ненадійні користувачі не мають доступу до формату введення PHP". - з останньою версією. Це стало зеленим, коли у мене був блок з форматом введення php на першій сторінці . Здається, ваша відповідь на даний момент просто не відповідає дійсності.
Молот

Отже, з того, що я можу сказати ... Модуль перегляду безпеки повідомляє вам, що використовується фільтр php ... а не які саме елементи його використовують, що в справжньому огляді безпеки було б корисним. Це, однак, є хорошим попередженням про необхідність подальшого розслідування.
Генерал Реднєк


7

Ви можете знайти всі представлення даних, у яких включено php, виконавши команду нижче в MySQL ...

SELECT vv.name , vd.display_options
FROM views_display AS vd
LEFT JOIN views_view AS vv ON vv.vid = vd.vid
WHERE vd.display_options REGEXP '.s:[3]+:"php".*'

Таблиця views_display зберігає цю інформацію в серіалізованому форматі .... Я перевіряв вище, як запит працює, як очікувалося .. Сподіваюся, це допоможе вирішити загадки PHP загадки :-)


1
Виглядає добре. Потрібно було б трохи перевірити його. Тим часом я взяв на себе сміття редагувати та очистив те, як ви написали запит (не торкаючись його логіки, імен тощо), звичайно.
Молот

Дякую :-) Я щойно перевірив, і я можу побачити перегляди, на яких увімкнено php .. Будемо сподіватися, що він теж працює для ОП ..
Аніл Сагар

1
Це працює не для всіх поглядів (наприклад, тих, що визначені в коді), і що регулярний вираз може легко створити помилкові позитиви ... краще, ніж нічого, хоча я здогадуюсь :)
Клайв

Використовуючи phpmyadmin, ви можете дуже легко шукати всі стовпці всіх таблиць, шукати php та вручну проходити результати.
рубін

0

Код від Аніла Сагар вище працює, лише якщо представлення збережено в базі даних. Якщо представлення лише в коді, воно не працюватиме. Отже, я написав невеликий фрагмент, який запускаю, щоб зберегти всі перегляди на db. Тоді я можу використовувати фрагмент MySQL для повернення php.

  $views = views_get_all_views();
  foreach ($views as $view) {
    if (empty($view->disabled)) {
      $view->save();
      drupal_set_message('view saved: ' . check_plain($view->name));
    }
  }

0

Старе питання, але першим був у моєму пошуку Google.

Існує модуль Contrib, який повинен знайти всі записи PHP:

PHP Finder

Модуль «PHP Finder» використовується для пошуку місця використання формату фільтра PHP, чи то у вузлі, блоці чи представленнях.


як щодо PHP, що використовується в Правилах?
Pierre.Vriens
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.