On Thu, Sep 15, 2005 at 10:32:02PM +0200, Raphael H. Becker wrote:
> find /var/www -name "*.ht*" -o -name "*.php" |
> sed -e "s,^,',; s,$,',;" | xargs clear_php.sh
>
> http://rabe.uugrn.org/scripts/clear_php.sh
Schwachstelle:
Hierbei werden immer alle Dateien konvertiert, auch wenn sie die
gesuchten Eigenschaften nicht besitzt.
Abhilfe: bei der Auswahl der Dateien schon die Dateien vorfiltern, die
Kandidaten fuer eine Konvertierung sind, in diesem speziellen Fall also
ein
find /var/www -name "*.ht*" -o -name "*.php" |
sed -e "s,^,',; s,$,',;" | xargs egrep -l '(\r|<? )' |
sed -e "s,^,',; s,$,',;" | xargs clear_php.sh
egrep -l gibt auf stdout nur die Dateinamen aus, die auf entweder \r
oder "<? " matchen und wirft diese dann mittels eines zweiten sed|xargs
dem script vor.
BTW: Hier würde find ... -print0 | xargs -0 versagen, denn das egrep
würde die Dateiliste nicht \0 separiert ausgeben, sondern immer
zeilenweise, also \n separiert. Deswegen mann man beim zweiten xargs
kein -0 verwenden und muss daher zum workaround mit sed greifen.
Auch das Filterscript ansich ließe sich noch verfeinern:
Nach dem Konvertieren wird TMPFILE nicht direkt zurückgeschrieben,
sondern vor dem Zurückschreiben noch geprüft, ob es überhaupt Änderungen
gab, um wirkungslose Konvertierungen nicht zurückzuschreiben (timestamps
würden sich ändern!).
Eine Überprüfung kann zB aufgrund der md5-Summe einer Datei erfolgen:
if ( md5 -r bla.php bla.php.tmp | cut -f 1 -d " " |
{ read X1 ; read X2 ; test "$X1" != "$X2" ; } ) ; then
# Dateien sind ungleich!
# Datei zurückschreiben (mv)
else
# Dateien sind identisch, nicht zurückschreiben, tempfile löschen
fi
Die Syntax von md5 sollte für Linux geprüft werden, in FreeBSD passiert sowas:
$ md5 -r bla.php bla.php.tmp
f2cca3f83140b43b3e70afebad997365 bla.php
fec3765b0f1ee982ea6eddda49403583 bla.php.tmp
$ md5 -r bla.php bla.php.tmp | cut -f 1 -d " "
f2cca3f83140b43b3e70afebad997365
fec3765b0f1ee982ea6eddda49403583
Weiterere Anwendungsbereiche:
* mp3-files modifizieren (zB ID3-Tags zufügen)
* Grafiken modifizieren (zB Wasserzeichen einblenden)
MfG
--
Raphael Becker http://rabe.uugrn.org/
http://schnitzelmitkartoffelsalat.und.rahmspin.at/
.........|.........|.........|.........|.........|.........|.........|..
- application/pgp-signature Anhang: stored
Received on Fri Sep 16 01:34:53 2005