Como encontrar todas as entradas que fazem uso do filtro de entrada php para desativar completamente o módulo de filtro php?

10

Quero desabilitar o módulo PHP Filter em um site grande, mas passar por todos os nós, blocos e outros campos em que você possa fazer uso possível do filtro php levaria eras.

Existe uma maneira ou método simples, talvez executando consultas SQL para descobrir onde o filtro php é usado em todo o meu site?

Alex
fonte

Respostas:

9

Em vez de reinventar a roda, basta instalar o módulo de Revisão de Segurança , que possui a seguinte verificação:

PHP ou Javascript no conteúdo (nós e comentários e campos no Drupal 7)

Para blocos, você pode verificar a coluna de formato na tabela block_custom.

O mais difícil é o Views - ainda não encontrei uma maneira confiável de localizar programaticamente o PHP não autorizado no Views.

Clive
fonte
11
Acho que se os responsáveis ​​pela Revisão de Segurança não foram capazes de adicionar uma verificação confiável para o Views, isso pode ser simplesmente quase impossível.
Mołot
@ MOLOT: Só encontrei uma maneira de recuperar pontos de vista que tem o PHP ativado por favor, veja a minha resposta abaixo .. Vai ser ótimo saber que tem quaisquer desvantagens ou casos extremos ...
Anil Sagar
11
Tudo o que obtive é "OK Usuários não confiáveis ​​não têm acesso para usar o formato de entrada PHP". - com a versão mais recente. Ficou verde quando tive um bloco com o formato de entrada php na primeira página . Sua resposta parece ser simplesmente falsa no momento.
Mołot
Então, pelo que posso dizer ... o Módulo de Revisão de Segurança informa que o filtro php está sendo usado ... e não quais elementos exatamente o estão usando, o que em uma verdadeira revisão de segurança seria útil. No entanto, este é um bom aviso de que é necessária mais investigação.
General Redneck
7

Você pode encontrar todas as visões que possuem o php ativado executando o comando abaixo no 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".*'

A tabela views_display armazena essas informações em formato serializado .... Eu testei acima a consulta funciona conforme o esperado. Espero que ajude a resolver as visualizações do enigma do PHP :-)

Anil Sagar
fonte
11
Parece bom. Precisaria testá-lo um pouco. Enquanto isso, tomei a liberdade de editar e limpei a maneira como você escreveu a consulta (sem tocar na lógica, nos nomes, etc.).
Mołot
Obrigado :-) Eu apenas verificado e eu posso capaz de ver pontos de vista que tem o PHP ativado .. Vamos esperar ele funciona para OP também ..
Anil Sagar
11
Isso não funciona para todos os pontos de vista (por exemplo, os definidos no código), e que regex poderia facilmente produzir falsos positivos ... melhor do que nada, embora eu acho que :)
Clive
Usando o phpmyadmin, você pode pesquisar facilmente todas as colunas de todas as tabelas, pesquisar pelo php e passar manualmente pelos resultados.
ROOBY
0

O código de Anil Sagar acima funciona apenas se a visualização for salva no banco de dados. Se a visualização estiver apenas no código, ela não funcionará. Então, escrevi um pequeno trecho que corro para salvar todas as visualizações no banco de dados. Então eu posso usar o trecho do MySQL para exibir o 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
fonte
0

Pergunta antiga, mas foi a primeira na minha pesquisa no Google.

Há um módulo Contrib que deve encontrar todas as entradas do PHP:

Localizador de PHP

O módulo 'PHP Finder' é usado para descobrir onde o formato do filtro PHP é usado, seja no nó, no bloco ou nas visualizações.

Spokje
fonte
e o PHP usado nas regras?
precisa saber é o seguinte