[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Un p'tit coup de main pour un grand nettoyage !



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  P*@!µ$ 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 !"


Reply to: