Cercando di interpretare i vostri script e cercando un po in giro, ho inteso che vi sono 3 problemi e un problemino
1) Bisogna controllare che la stringa passata non contenga tag html
2) bisogna controllare che la stringa si riferisca ad un file residente sul mio server
3) il carattere "\" potrebbe darmi problemi (non ho capito perchè!!)
il problemino è che il watermark non deve essere caricato con
Codice PHP:
$watermark_file = "hxxp://miosito.com/watermark.JPG";
ma ora lo carico con
Codice PHP:
$watermark_file = "watermark.JPG";
penso di effettuare le seguenti modifiche
Codice PHP:
<?php
$source =@$_GET['img'];
if (strip_tags($source) != $source) //se la stringa contiene tag html o sbarra
die(); //interrompi
}
if (!ereg("^hxxp://miosito.com/",$str)) { //se la stringa passata non inizia per
die(); // hxxp://miosito.com/
}
$watermark_file = "watermark.JPG"; //qui ho fatto una modifica: invece di
//http://miosito.com/watermark.JPG
//ho inserito solo watermark.JPG
//è più veloce
$image = @imagecreatefromjpeg($source);
$source_w = @imagesx($image);
$source_h = @imagesy($image);
$watermark = @imagecreatefromjpeg($watermark_file);
$watermark_w = @imagesx($watermark);
$watermark_h = @imagesy($watermark);
//qui decido dove posizionare il watermark
$dest_x = ($source_w - $watermark_w)/2;
$dest_y = 5;
@imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_w, $watermark_h);
header('Content-type: image/jpeg');
$if (isset($source_w) )
@imagejpeg($image);
else
@$imagejpeg($watermark);
?>
ho sostituito hxxp a http nel testo perchè mi dava problemi di laiaut.
In pratica mi sono accontentato di verificare che il file provenga dal mio sito.
Infatti non credo di aver problemi se viene letto un qualsiasi file sul mio server.
A questo punto suppongo che per quanto possa essere rozzo il codice che ho scritto, non debba più avere "timore e angoscia" del code injection.
Aspetto le vostre critiche e i vostri consigli