On Wed, Apr 12, 2006 at 10:52:38PM +0200, Rafael Muñoz Moreno-Davila wrote: > $page = $_SERVER['PHP_SELF'];
je ne connais pas exactement la façon dont PHP gère les problèmes de data injection / cross-scripting. Il y a des trucs `magiques' qui sont très déroutants et parfois non corrects. En supposant que $page vient des données utilisateurs du FORM (POST) ou d'un GET, et en supposant que PHP n'a pas d'auto-bricolage avec (en bref: que la donnée est *déjà* décodée), il faudrait, avant de faire ça: > echo "<input name=\"Page\" value=\"$page\" type=\"hidden\">"; protéger $page. Si $page est censé être un nombre, en Perl il suffirait de faire $page = $page + 0. On pourrait aussi imaginer vérifier avec une regexp comme $page =~ /^\d+$/. Enfin, on peut aussi assurer que $page ne contiendra pas d'entities, ce qui éviterait p.ex. que $page soit "\"><IMG SRC=\"...\"/>\"; ou quelque chose de ce genre. En Perl, le plus simple est d'utiliser URI::Escape ou HTML::Entities, suivant le contexte. PS: le même problème se pose dans l'accès à la base de données, la solution est dans ce cas l'escaping, ou, encore mieux, le `binding', cf http://cvs.alphanet.ch/cgi-bin/cvsweb/~checkout~/schaefer/public/cours/ESNIG/securite/cours/echanges/securite-devel/RELEASES/securite-devel.ps.3.pdf?rev=HEAD;content-type=application%2Fpdf _______________________________________________ gull mailing list [email protected] http://lists.alphanet.ch/mailman/listinfo/gull
