Testeur : un shell PHP pour tester vos scripts

Ce plugin ajoute une page dans l’espace privé permettant de saisir des scripts PHP dans un formulaire, puis de les exécuter en environnement et d’en observer le résultat.

C’EST TRÈS DANGEREUX !! car vous pourrez tout faire avec ce shell php (y compris détruire la base de donnée), mais c’est tellement plus simple que de devoir passer par FTP pour faire la même chose ....

Motivations / Présentation

Tout développeur sur SPIP se voit écrire et ré-écrire des lignes de code PHP, les tester, observer le résultat, puis les ré-écrire à nouveau jusqu’à trouver le code correct ...

Le plugin Testeur est une simple page ’exec’ présentant une console PHP permettant de saisir des lignes de code puis de les exécuter directement sur la même page, avec retour des informations d’erreurs le cas échéant [1]. Cela permet de retrouver par exemple un appel de fonction du noyau, une variable déclarée, de tester l’efficacité d’une nouvelle fonction etc.

Aperçu de la page ’exec=testeur’
Capture d’écran de la page du plugin Testeur de l’espace privé de SPIP.

Sécurité

La page de Testeur n’est accessible qu’au(x) webmestre(s) du site.

Malgré cette sécurité, il s’agit bien évidemment d’une faille potentielle dans la sécurité globale de SPIP et du serveur d’hébergement ! [2] Il faut donc coder avec précaution et éviter au possible les actions PHP qui pourraient toucher au noyau, aux fichiers, à la base de données ou à PHP lui-même.

Plus généralement, il est fortement conseillé de NE PAS ACTIVER LE PLUGIN SUR UN SITE EN PRODUCTION. Il servira uniquement pendant la phase de développement. [3]

Fonctionnalités / Fonctionnement

Un ensemble de raccourcis de fonctions standards de PHP ou de SPIP sont programmées pour faciliter les codes tapés dans la zone de saisie. Ces raccourcis sont rappelés et expliqués dans une zone dépliable en haut de page.
Par exemple, en tapant _export( $a ), le système exécutera en fait la fonction PHP var_export( $a ).

Chaque fois que la zone de saisie est validée, le script tapé s’exécute et est enregistré en session. Un système simple d’utilisation des flèches du clavier vous permet de retrouver les entrées de session, de vider la zone de saisie, d’y retourner etc.

Installation

  1. Téléchargez le fichier .zip de cette page vers le dossier de plugins de votre SPIP
  2. Installez le plugin depuis votre espace privé comme expliqué ici : http://www.spip.net/fr_article3396.html
  3. Accédez à la page du plugin via l’onglet de la page ’Configuration’ de l’espace privé (réservé aux webmestres du site).

À noter que le plugin est hébergé sur un serveur distant. Sa dernière version stable est toujours disponible à la même URL (cela peut permettre une mise à jour automatique) : http://projets.ateliers-pierrot.fr/....

Aide / Doc

La page de Testeur, accessible via l’url ’ecrire/ ?exec=testeur’, apporte sa propre documentation dans une zone dépliable en haut de page (au dessus de la zone de saisie). Y sont rappelées certaines règles de fonctionnement, le nombre de saisies enregistrées en session, les raccourcis de fonctions programmés ...

Documentation rapide du plugin incluse dans la page de l’espace privée

Lame Couteau Suisse

Une version du plugin a été mise en place pour s’intégrer en tant que lame du Couteau Suisse. Pour l’utiliser, téléchargez l’archive ci-dessous et suivez les instructions du fichier « READ_ME.txt ». Une fois installée, une lame « PHP Shell » apparaît dans la catégorie ’Divers’ du Couteau Suisse [4].

Notes

9/06/2010 - Mise à jour du plugin pour passage à la version 2.1 de SPIP (la compatibilité avec la version 2.0 et les suivantes est assurée).

Notes

[1Pour être plus clair : le plugin ajoute une console PHP en ligne à SPIP.

[2Les précautions à considérer sont les mêmes que dans vos scripts ’classiques’ : actions sur les fichiers et répertoires, sur les configurations de PHP, les fichiers distants et la base de données. Une règle générale doit être de ne pas considérer que le plugin ’vérifiera’ la dangerosité des scripts à votre place. Ce qui est finalement le cas pour tout travail de développement.

[3Il peut notamment être un outil très intéressant et pratique lorsque vous développez en local.

[4Si vous utilisez le plugin sous forme de lame, essayez tant que possible de ne pas cumuler la version individuelle du plugin Testeur afin de ne pas risquer de surcharge (les scripts ne devraient pas créer de conflit, mais mieux vaut ne pas tenter le diable !).

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom