VÉRIFIER LA SYNTAXE D'UNE ADRESSE IP AVEC SÉCURITÉ ANTI FAILLE XSS ET INJECTION

coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
- 10 juin 2007 à 06:10
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
- 10 juin 2007 à 22:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43063-verifier-la-syntaxe-d-une-adresse-ip-avec-securite-anti-faille-xss-et-injection-sql

coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
41
10 juin 2007 à 22:44
c'est domage d'utiliser une regexp pour ca...
DiGhan
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
10 juin 2007 à 22:31
Ou une solution regex :



function CheckIP($string) {
$iRes = 0;
$pattern = '#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#';
if ( preg_match($pattern,$$string,$matches) === 1 ) {
for ($i=1; $i<=4; $i++)
if ($matches[$i] >=0 && $matches[$i] <= 255) $iRes++;
} return ($iRes == 4)?true:false;
}
kankrelune
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

10 juin 2007 à 17:12
Pourquoi htmlentities(), htmlspecialchars() et mysql_real_escape_string() ? ça sert à rien... c'est une fonction de vérification... et quand bien même cela serait justifié pourquoi

htmlspecialchars(htmlentities(...));

l'un ou l'autre ne suffit pas... .. ?

function checkip($ip)
{
$ip = explode('.',trim($ip));

if(count($ip) !== 4)
return false;

$i = -1;
while(isset($ip[++$i]))
{
if(ctype_digit($ip[$i]) === false)
return false;
elseif(($ip[$i] = (int)$ip[$i]) < 0 || $ip[$i] > 255)
return false;
}
return true;
}

@ tchaOo°
dvdstory
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009

10 juin 2007 à 15:27
Effectivement je peux être plus précis, je viens de remplcer 999 par 255.
vilhjalms
Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
2
10 juin 2007 à 10:01
Du même avis que coucou747 sans parler que votre code renvera TRUE pour une address ip du type : $ip='999.999.999.999'; ce qui est impossible lol :) Revoir les bases sur les address ip :)
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
41
10 juin 2007 à 06:10
#
# // ou sans la sécurité SQL injection

tu te proteges de ca dans ce genre de fonction... qui n'a pas besoin de ce genre de securite ???

if (long2ip(ip2long($a))===$a