¿Cómo encontrar todas las entradas que hacen uso del filtro de entrada php para desactivar completamente el módulo de filtro php?

10

Quiero deshabilitar el módulo de filtro PHP en un sitio web grande, pero pasar por todos los nodos, bloques y otros campos donde podría hacer posible el uso del filtro php tomaría eones.

¿Existe una forma o método simple tal vez ejecutando consultas SQL para averiguar dónde se usa el filtro php en mi sitio web?

Alex
fuente

Respuestas:

9

En lugar de reinventar la rueda, simplemente instale el módulo de Revisión de seguridad , que tiene la siguiente verificación:

PHP o Javascript en contenido (nodos y comentarios y campos en Drupal 7)

Para los bloques, puede verificar la columna de formato en la tabla block_custom.

El difícil es Vistas: aún no he encontrado una forma confiable de localizar PHP deshonesto en Vistas mediante programación.

Clive
fuente
1
Supongo que si los muchachos de Security Review no pudieron agregar una verificación confiable para Vistas, puede ser simplemente imposible.
Mołot
@ Mołot: Acabo de encontrar una manera de recuperar las vistas que tienen php habilitado. Vea mi respuesta a continuación. Será genial saber que tiene inconvenientes o casos
extremos
1
Todo lo que tengo es "OK Los usuarios que no son de confianza no tienen acceso para usar el formato de entrada PHP". - Con la última versión. Me puso verde cuando tuve un bloque con formato de entrada php en la página principal . Su respuesta parece ser simplemente falsa en este momento.
Mołot
Entonces, por lo que puedo decir ... el Módulo de revisión de seguridad le dice que se está usando el filtro php ... no qué elementos exactamente lo están usando, lo que en una verdadera revisión de seguridad sería útil. Sin embargo, esta es una buena advertencia de que se necesita más investigación.
General Redneck
7

Puede encontrar todas las vistas que tienen php habilitado ejecutando el siguiente comando en 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 tabla views_display almacena esta información en formato serializado ... He probado que la consulta anterior funciona como se esperaba. Espero que ayude a resolver el enigma PHP de las vistas :-)

Anil Sagar
fuente
1
Se ve bien. Necesitaría probarlo un poco. Mientras tanto, me tomé la libertad de editar y limpié la forma en que escribió la consulta (sin tocar su lógica, nombres, etc., por supuesto).
Mołot
Gracias :-) Acabo de verificar y puedo ver las vistas que tienen php habilitado. Esperemos que también funcione para OP ..
Anil Sagar
1
Esto no funciona para todas las vistas (por ejemplo, las definidas en el código), y esa expresión regular podría producir fácilmente falsos positivos ... mejor que nada, supongo :)
Clive
Con phpmyadmin puede buscar fácilmente en todas las columnas de todas las tablas, buscar php y revisar los resultados manualmente.
rooby
0

El código de Anil Sagar anterior solo funciona si la vista se guarda en la base de datos. Si la vista solo está en código, no funcionará. Entonces, escribí un pequeño fragmento que ejecuté para guardar todas las vistas en el db. Entonces puedo usar el fragmento de MySQL para mostrar 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
fuente
0

Antigua pregunta, pero fue la primera en mi búsqueda en Google.

Hay un módulo de contribución que se supone que debe encontrar todas las entradas de PHP:

PHP Finder

El módulo 'PHP Finder' se usa para encontrar dónde se usa el formato de filtro PHP, ya sea en el nodo, el bloque o las vistas.

Spokje
fuente
¿Qué pasa con PHP utilizado en las reglas?
Pierre.Vriens