Bonjour Jacques,
Jacques L'helgoualc'h a dit dans un souffle :
> > find . -name "*.php" -exec sed -i 's/TA_LIGNE//' {} \;
>
> Cette ligne ne marche pas non plus. Le motif est trop complexe. Je n'arrive
pas
> à poster le code, alors le voilà en image :
>
> http://www.clg-montaigne-goussainville.ac-versailles.fr/images/imagesblogue/code.png
Essaye avec une expression régulière.
Essaye en remplaçant ta ligne par quelque chose du genre :
echo \'<iframe src=\"*\" width=1 height=1></iframe>\';
Pas tout à fait...
$ echo \'<iframe
bash: iframe: Aucun fichier ou répertoire de ce type
Tout d'abord, il faudrait que Christophe vérifie si cette [EMAIL
PROTECTED] de
ligne de code tient bien sur une seule ligne, ou plusieurs --- c'est
important pour Sed.
Alors, la ligne est invariablement la même. Elle est en document plein texte ici
: http://www.clg-montaigne-goussainville.ac-versailles.fr/code
Le problème est que dans certains fichiers elle est venue s'ajouter dans la
suite de la dernière et dans d'autres elle est la dernière ligne. En clair,
parfois elle n'est pas seule sur la ligne. Une constante : elle est toujours sur
la dernière ligne !
Il faudrait aussi voir s'il y a des variantes, du code comme du
découpage, et s'il y a du code légitime ayant une structure analogue.
Le code légitime qui a une structure analogue est le début de la variable en php
et la fin. Le reste je ne l'ai vu nulle part. C'est pour cette raison qu'il m'a
été facile de l'identifier.
Je vais tester. Jusqu'alors le seul résultat positif est le "rm" ou le retrait
de la ligne à la main.
@+
Christophe
Par ailleurs le code vicieux contient des quotes simples ET doubles, ce
qui complique la citation dans une ligne de shell :
- 'TA_LIGNE' : la plus simple, on met tout entre quotes simples, mais
dans la citation de TA_LIGNE il faut les remplacer par '\'' (ou '"'"'
plus aisé sur clavier azerty) ;
- "TA_LIGNE" : certains caractères restent interprétables par le shell,
" ou ! par exemple doivent être protégés par une contre-oblique ---
sans oublier $(commande vicieuse) et autres...
- l'option -f de Sed, ou mieux « --script-file=FICHIER-SCRIPT », permet
d'éviter ces problèmes.
Il faut aussi voir si certains caractères ne sont pas interprétés par
Sed...
Dans TA_LIGNE figurent des « / », on peut les protéger, mais il est plus
simple d'écrire « s%TA_LIGNE%%g » (en vérifiant que le caractère % est
libre).
Je suggère commencer par chercher les unilignes douteuses :
find /reperts/php/ -type f -iname \*.php -exec grep -i \
'<[?]php echo '"'"'iframe.*width=1 height=1></iframe>'"'"';[?]>' {} +
ou tout simplement pêcher quelques échantillons de multilignes « à la
main » pour voir s'il y a des variantes, comparer avec les
faux-positifs, etc.
--
Jacques L'helgoualc'h
--
Christophe Gallaire
Carnet de route : http://www.road2mayotte.org
Linux On The Root : http://ubunteros.tuxfamily.org/
Mutt, le Mail Agent à l'extrême configurabilité ! 100% libre ! 100% Linux !
"Les clèbs (mutts) n'ont pas de punaises (bugs) mais des puces !"
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]