Comment trouver toutes les entrées qui utilisent le filtre d'entrée php pour désactiver complètement le module de filtre php?

10

Je veux désactiver le module de filtre PHP sur un grand site Web, mais parcourir tous les nœuds, blocs et autres champs où vous pourriez rendre possible l'utilisation du filtre php prendrait des éons.

Existe-t-il un moyen ou une méthode simple en exécutant des requêtes SQL pour savoir où le filtre php est utilisé sur mon site Web?

Alex
la source

Réponses:

9

Plutôt que de réinventer la roue, installez simplement le module Security Review , qui présente la vérification suivante:

PHP ou Javascript dans le contenu (nœuds et commentaires et champs dans Drupal 7)

Pour les blocs, vous pouvez vérifier la colonne de format dans la table block_custom.

Le plus difficile est les vues - je n'ai pas encore trouvé de moyen fiable de localiser le PHP voyou dans les vues par programme.

Clive
la source
1
Je suppose que si les gars de Security Review n'étaient pas en mesure d' ajouter une vérification fiable des vues, cela pourrait tout simplement être impossible.
Mołot
@ Mołot: Je viens de trouver un moyen de récupérer des vues avec le php activé, veuillez voir ma réponse ci-dessous .. Ce sera génial de savoir qu'il a des inconvénients ou des cas de bord ...
Anil Sagar
1
Tout ce que j'ai obtenu est "OK, les utilisateurs non fiables n'ont pas accès au format d'entrée PHP". - avec la dernière version. Il est devenu vert quand j'ai eu un bloc avec le format d'entrée php sur la première page . Votre réponse semble tout simplement fausse pour le moment.
Mołot du
Donc, d'après ce que je peux dire ... le module de révision de la sécurité vous indique que le filtre php est utilisé ... pas quels éléments l'utilisent exactement, ce qui dans une véritable revue de sécurité serait utile. C'est cependant un bon avertissement qu'une enquête plus approfondie est nécessaire.
Général Redneck
7

Vous pouvez trouver toutes les vues sur lesquelles php est activé en exécutant la commande ci-dessous dans 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 table views_display stocke ces informations au format sérialisé .... J'ai testé la requête ci-dessus fonctionne comme prévu .. J'espère que cela aide à résoudre les vues énigme PHP :-)

Anil Sagar
la source
1
Cela semble bon. Aurait besoin de le tester un peu. En attendant, j'ai pris la liberté de modifier et de nettoyer la façon dont vous avez écrit la requête (sans toucher à sa logique, ses noms, etc. bien sûr).
Mołot
Merci :-) Je viens de vérifier et je peux voir les vues sur lesquelles le php est activé .. Espérons que ça marche aussi pour OP ..
Anil Sagar
1
Cela ne fonctionne pas pour toutes les vues (par exemple celles définies dans le code), et cette expression régulière pourrait facilement produire de faux positifs ... mieux que rien, je suppose :)
Clive
En utilisant phpmyadmin, vous pouvez très facilement rechercher dans toutes les colonnes de toutes les tables, rechercher php et parcourir manuellement les résultats.
rooby
0

Le code d'Anil Sagar ci-dessus ne fonctionne que si la vue est enregistrée dans la base de données. Si la vue est uniquement en code, cela ne fonctionnera pas. J'ai donc écrit un petit extrait que je lance pour enregistrer toutes les vues sur la base de données. Ensuite, je peux utiliser l'extrait de code MySQL pour faire apparaître 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
la source
0

Vieille question, mais était la première sur ma recherche Google.

Il y a un module Contrib qui est censé trouver toutes les entrées PHP:

PHP Finder

Le module 'PHP Finder' est utilisé pour trouver où le format de filtre PHP est utilisé, que ce soit dans le nœud, le bloc ou les vues.

Spokje
la source
Qu'en est-il de PHP utilisé dans les règles?
Pierre.Vriens