Come trovare tutti gli ingressi che utilizzano il filtro di ingresso php per disabilitare completamente il modulo filtro php?


10

Voglio disabilitare il modulo filtro PHP su un sito Web di grandi dimensioni, ma passare attraverso tutti i nodi, i blocchi e altri campi in cui è possibile utilizzare il filtro php richiederebbe eoni.

Esiste un modo o un metodo semplice eseguendo query SQL per scoprire dove viene utilizzato il filtro php in tutto il mio sito Web?

Risposte:


9

Invece di reinventare la ruota, basta installare il modulo Security Review , che ha il seguente controllo:

PHP o Javascript nel contenuto (nodi e commenti e campi in Drupal 7)

Per i blocchi è possibile controllare la colonna del formato nella tabella block_custom.

Il difficile è Views: devo ancora trovare un modo affidabile per localizzare PHP canaglia in Views a livello di programmazione.


1
Immagino che se i ragazzi di Security Review non sono stati in grado di aggiungere un controllo affidabile per Views, potrebbe essere semplicemente la prossima cosa impossibile.
Mołot,

@ Mołot: ho appena trovato un modo per recuperare le viste che hanno abilitato php, per favore vedi la mia risposta qui sotto .. Sarà bello sapere che ha degli svantaggi o casi limite ...
Anil Sagar,

1
Tutto quello che ho ottenuto è "OK Gli utenti non attendibili non hanno accesso all'utilizzo del formato di input PHP". - con l'ultima versione. Mi è diventato verde quando avevo un blocco con il formato di input php in prima pagina . La tua risposta sembra essere semplicemente falsa al momento.
Mołot,

Quindi, da quello che posso dire ... il modulo Security Review ti dice che viene utilizzato il filtro php ... non quali elementi lo stanno usando esattamente, il che in una vera recensione di sicurezza sarebbe utile. Questo è comunque un buon avvertimento che sono necessarie ulteriori indagini.
Generale Redneck,


7

Puoi trovare tutte le viste con php abilitato eseguendo il comando seguente in 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".*'

La tabella views_display memorizza queste informazioni in formato serializzato .... Ho testato sopra la query funziona come previsto .. Spero che aiuti a risolvere l'enigma PHP delle visualizzazioni :-)


1
Sembra buono. Dovrebbe provarlo un po '. Nel frattempo mi sono liberato della modifica e ho ripulito il modo in cui hai scritto la query (senza toccarne la logica, i nomi ecc. Ovviamente).
Mołot,

Grazie :-) Ho appena verificato e posso vedere le viste che hanno abilitato php .. Speriamo che funzioni anche per OP ..
Anil Sagar

1
Questo non funziona per tutte le viste (ad esempio quelle definite nel codice), e quel regex potrebbe facilmente produrre falsi positivi ... meglio di niente anche se immagino :)
Clive

Usando phpmyadmin puoi cercare facilmente tra tutte le colonne di tutte le tabelle, cercare php e scorrere manualmente i risultati.
Rooby,

0

Il codice di Anil Sagar sopra funziona solo se la vista è salvata nel database. Se la vista è solo nel codice non funzionerà. Quindi, ho scritto un piccolo frammento che eseguo per salvare tutte le viste nel db. Quindi posso usare lo snippet di MySQL per far emergere 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

Vecchia domanda, ma era la prima nella mia ricerca su Google.

C'è un modulo Contrib che dovrebbe trovare tutte le voci PHP:

PHP Finder

Il modulo 'PHP Finder' viene utilizzato per trovare dove viene utilizzato il formato del filtro PHP, nel nodo, nel blocco o nelle viste.


che dire di PHP utilizzato nelle regole?
Pierre.Vriens,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.