OVH Cloud OVH Cloud

anti injections

37 réponses
Avatar
N.K. Cole
Bonjour

Que penser de !eregi("(<|\'|\").*(>|\'|\")",$string) comme script de
détection d'injections ?

10 réponses

1 2 3 4
Avatar
Olivier Miakinen

Que penser de !eregi("(<|'|").*(>|'|")",$string) comme script de
détection d'injections ?


Je ne sais pas de quoi il s'agit, mais la chaîne de recherche
"(<|'|").*(>|'|")" ne serait-elle pas équivalente à
"[<'"].*[>'"]" ou à '[<'"].*[>'"]', plus lisibles ?

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
Vincent Lascaux
Que penser de !eregi("(<|'|").*(>|'|")",$string) comme script de
détection d'injections ?


$string = htmlentities($string) ne te permettrait-il pas d'éviter toute
forme d'injection proprement et simplement ?

--
Vincent

Avatar
N.K. Cole
Bonjour

php5.0.2 winxp

$str="Un 'apostrophe' en <b>gras</b>"
htmlentities($str) donne Un 'apostrophe' en <b>gras</b>
et devrait donner Un 'apostrophe' en &lt;b&gt;gras&lt;/b&gt selon la doc
php.

Alors si les balises ne sont pas converties on a un danger réel potentiel .



"Vincent Lascaux" a écrit dans le message de news:
423a3f8b$0$20728$
Que penser de !eregi("(<|'|").*(>|'|")",$string) comme script de
détection d'injections ?


$string = htmlentities($string) ne te permettrait-il pas d'éviter toute
forme d'injection proprement et simplement ?

--
Vincent



Avatar
CrazyCat
N.K. Cole wrote:
$str="Un 'apostrophe' en <b>gras</b>"
htmlentities($str) donne Un 'apostrophe' en <b>gras</b>
et devrait donner Un 'apostrophe' en &lt;b&gt;gras&lt;/b&gt selon la doc
php.


Donne à l'affichage?
ou dans le code source de la page?
Si c'est à l'affichage: c'est normal, tout va bien.
Si c'est dans le code source, il y a effectivement un problème.


--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.c-p-f.net

Avatar
Cleo
"Vincent Lascaux" a écrit dans le message de news:
423a3f8b$0$20728$
Que penser de !eregi("(<|'|").*(>|'|")",$string) comme script de
détection d'injections ?




$string à été saisi par l'utilisateur (ton client), en vertue de quel
principe te permets tu d'en modifier le contenu ?

La solution proposée par vincent est incontournable ... bien sûr on peut
toujours réinventer les fonctions htmlentities ou htmlspecialchars ...

bref.
--
Cléo.



Avatar
Vincent Lascaux
$str="Un 'apostrophe' en <b>gras</b>"
htmlentities($str) donne Un 'apostrophe' en <b>gras</b>
et devrait donner Un 'apostrophe' en &lt;b&gt;gras&lt;/b&gt selon la
doc
php.


Donne à l'affichage?
ou dans le code source de la page?
Si c'est à l'affichage: c'est normal, tout va bien.


Pourquoi est ce qu'un serait ajouté avant les apostrophes à l'affichage ?

--
Vincent


Avatar
Sebastian 'CrashandDie' Lauwers
Vincent Lascaux wrote:

Pourquoi est ce qu'un serait ajouté avant les apostrophes à l'affichage ?


Sûrement qu'il l'a soumis à PHP en $_POST ou $_GET, et que les magic
quotes sont activés.

S.

Avatar
N.K. Cole
<form action="">
<input size@ name="str">
<input type=submit>
</form>
<?= htmlentities($str); ?> ----> affiche Un 'apostrophe' en
<b>gras</b>

si quelqu'un écrit <$b> au lieu de <b> et que ce $b soit un script malin, ca
ne risque pas de causer des pb ??



htmlentities($str) donne Un 'apostrophe' en <b>gras</b>
et devrait donner Un 'apostrophe' en &lt;b&gt;gras&lt;/b&gt selon la
doc


php.


Donne à l'affichage?
ou dans le code source de la page?
Si c'est à l'affichage: c'est normal, tout va bien.
Si c'est dans le code source, il y a effectivement un problème.



Avatar
Sebastian 'CrashandDie' Lauwers
N.K. Cole wrote:

Au lieu d'utiliser un <form>, et qui fausse les résultats si on ne
comprend pas les bases tels les magic quotes ou autres, utilisez le
script suivant:

<?php

$var = "une p'tite chaine quelconque qui n'a pas de <b>réelle</b>
importance";

$var = htmlentities ($var);

echo $var;

?>

N'oubliez pas de regarder la source et l'affichage, c'est deux choses
totalement différentes...

si quelqu'un écrit <$b> au lieu de <b> et que ce $b soit un script malin, ca
ne risque pas de causer des pb ??


J'ai pas compris... Comment $b peut-il être un script malicieux? Il
existe une grande différence entre la sécurisation des variables
d'entrées, et les regexp utilisées pour permettre l'utilisation de code
html dans ses formulaires, dans les deux cas, votre remarque n'a pas de
sens.

AMHA

Mes 2 centimes

S.

Avatar
Vincent Lascaux
<form action="">
<input size@ name="str">
<input type=submit>
</form>
<?= htmlentities($str); ?> ----> affiche Un 'apostrophe' en
<b>gras</b>

si quelqu'un écrit <$b> au lieu de <b> et que ce $b soit un script malin,
ca
ne risque pas de causer des pb ??


Non : PHP ne remplace le contenu des variable dans une chaine de caractère
uniquement si elles sont explicitement écrites entre guillemets doubles.
Par exemple $foo = 'bar'; echo "Foo $foo"; affichera Foo bar
et $foo = '$bar'; echo "Foo $foo" affichera bien Foo $bar (même si $bar est
une variable qui existe) : l'interpreteur voit $foo dans une chaine avec des
guillemets double, il remplace par la valeur et s'arrête là.

--
Vincent

1 2 3 4