Jak znaleźć wszystkie wejścia wykorzystujące filtr wejściowy php, aby całkowicie wyłączyć moduł filtra php?

10

Chcę wyłączyć moduł PHP Filter na dużej stronie internetowej, ale przejście przez wszystkie węzły, bloki i inne pola, w których możesz użyć filtra php, zajęłoby eony.

Czy istnieje prosty sposób lub metoda, uruchamiając zapytania SQL, aby dowiedzieć się, gdzie filtr php jest używany w mojej witrynie?

Alex
źródło

Odpowiedzi:

9

Zamiast ponownie wynaleźć koło, po prostu zainstaluj moduł Security Review , który ma następującą kontrolę:

PHP lub JavaScript w treści (węzły, komentarze i pola w Drupal 7)

W przypadku bloków możesz sprawdzić kolumnę formatu w tabeli block_custom.

Najtrudniejszy jest widok - jeszcze nie znalazłem niezawodnego sposobu, aby programowo zlokalizować nieuczciwe PHP w widokach.

Clive
źródło
1
Wydaje mi się, że jeśli faceci Security Review nie byli w stanie dodać wiarygodnego sprawdzania widoków, może to być po prostu następna niemożliwa.
Mołot
@ Mołot: Właśnie znalazłem sposób na odzyskanie widoków z włączoną obsługą php, zobacz moją odpowiedź poniżej. Wspaniale będzie wiedzieć, że ma jakieś wady lub przypadki na krawędziach ...
Anil Sagar
1
Mam tylko „OK Niezaufani użytkownicy nie mają dostępu do formatu wejściowego PHP”. - z najnowszą wersją. Sprawiło, że stałem się zielony, kiedy miałem blok z formatem wejściowym php na pierwszej stronie . Twoja odpowiedź wydaje się w tej chwili po prostu nieprawdziwa.
Mołot
Tak więc, z tego co mogę powiedzieć ... Moduł Przeglądu Bezpieczeństwa informuje, że używany jest filtr php ... a nie jakie elementy dokładnie go używają, co w prawdziwym przeglądzie bezpieczeństwa byłoby pomocne. Jest to jednak dobre ostrzeżenie, że potrzebne są dalsze dochodzenia.
Generał Redneck,
7

Możesz znaleźć wszystkie widoki z włączoną obsługą php, uruchamiając poniższe polecenie w 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".*'

tabela views_display przechowuje te informacje w formacie zserializowanym .... Testowałem powyższe zapytanie zgodnie z oczekiwaniami .. Mam nadzieję, że pomoże to rozwiązać zagadkę poglądów PHP :-)

Anil Sagar
źródło
1
Wygląda dobrze. Musiałbym to trochę przetestować. W międzyczasie pozwoliłem sobie na edycję i oczyściłem sposób pisania zapytania (bez dotykania jego logiki, nazw itp.).
Mołot
Dziękuję :-) Właśnie zweryfikowałem i mogę zobaczyć widoki, które mają włączoną obsługę php .. Miejmy nadzieję, że to zadziała również dla OP ..
Anil Sagar
1
Nie działa to dla wszystkich widoków (np. Tych zdefiniowanych w kodzie), a wyrażenie regularne może z łatwością generować fałszywe alarmy ... chyba lepiej niż nic :)
Clive
Za pomocą phpmyadmin możesz bardzo łatwo przeszukiwać wszystkie kolumny wszystkich tabel, szukać php i ręcznie przeglądać wyniki.
rooby
0

Kod z powyższego Anil Sagar działa tylko wtedy, gdy widok jest zapisany w bazie danych. Jeśli widok jest tylko w kodzie, nie będzie działać. Napisałem więc krótki fragment, który uruchamiam, aby zapisać wszystkie widoki w bazie danych. Następnie mogę użyć fragmentu MySQL do wypuszczenia 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));
    }
  }
LoopDuplicate
źródło
0

Stare pytanie, ale najpierw było w mojej wyszukiwarce Google.

Jest moduł Contrib, który powinien znaleźć wszystkie wpisy PHP:

Wyszukiwarka PHP

Moduł „PHP Finder” służy do znalezienia, gdzie używany jest format filtru PHP, czy to w węźle, bloku czy w widokach.

Spokje
źródło
co z PHP używanym w Regułach?
Pierre.Vriens,