Voila, je cherche à limiter l'accès à un fichier par l'ip (ou la plage
d'ip).
La solution actuellement en place est:
$tested_host = $REMOTE_HOST
if (
(ereg('192.168.0.[0-9]{1,3}', $tested_host) OR
(ereg('192.168.10.[0-9]{1,3}', $tested_host) OR
(ereg('192.168.20.[0-9]{1,3}', $tested_host)) {
...
}
Il ne semble pas possible, avec ereg ou preg_match, d'utiliser un
tableau de pattern, quel est à votre avis la solution la plus simple?
J'avais bien pensé à faire un preg_replace du genre:
preg_replace($hosts, "authorized", $tested_host);
if ($tested_host == "authorized") {
...
}
--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
La solution actuellement en place est: $tested_host = $REMOTE_HOST if ( (ereg('192.168.0.[0-9]{1,3}', $tested_host) OR (ereg('192.168.10.[0-9]{1,3}', $tested_host) OR (ereg('192.168.20.[0-9]{1,3}', $tested_host)) { ... }
Il ne semble pas possible, avec ereg ou preg_match, d'utiliser un tableau de pattern,
Et un pattern unique traitant tous les cas, ça ne t'irait pas ?
Par exemple le pattern suivant : '/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/'
Ou plus simplement : '/192.168.(0|10|20).[0-9]{1,3}/'
Voire : '/192.168.[12]?0.[0-9]{1,3}/'
Tant que j'y suis, il serait peut-être une bonne idée de tester le '.' en tant que tel, plutôt que « tout caractère ». Donc : '/192.168.[12]?0.[0-9]{1,3}/'
J'avais bien pensé à faire un preg_replace du genre: preg_replace($hosts, "authorized", $tested_host); if ($tested_host == "authorized") { ... }
Oui, c'est aussi une possibilité. Bien vérifier qu'il ne peut pas être mis à "authorized" par le visiteur.
La solution actuellement en place est:
$tested_host = $REMOTE_HOST
if (
(ereg('192.168.0.[0-9]{1,3}', $tested_host) OR
(ereg('192.168.10.[0-9]{1,3}', $tested_host) OR
(ereg('192.168.20.[0-9]{1,3}', $tested_host)) {
...
}
Il ne semble pas possible, avec ereg ou preg_match, d'utiliser un
tableau de pattern,
Et un pattern unique traitant tous les cas, ça ne t'irait pas ?
Par exemple le pattern suivant :
'/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/'
Ou plus simplement :
'/192.168.(0|10|20).[0-9]{1,3}/'
Voire :
'/192.168.[12]?0.[0-9]{1,3}/'
Tant que j'y suis, il serait peut-être une bonne idée de tester le '.'
en tant que tel, plutôt que « tout caractère ». Donc :
'/192.168.[12]?0.[0-9]{1,3}/'
J'avais bien pensé à faire un preg_replace du genre:
preg_replace($hosts, "authorized", $tested_host);
if ($tested_host == "authorized") {
...
}
Oui, c'est aussi une possibilité. Bien vérifier qu'il ne peut pas être
mis à "authorized" par le visiteur.
La solution actuellement en place est: $tested_host = $REMOTE_HOST if ( (ereg('192.168.0.[0-9]{1,3}', $tested_host) OR (ereg('192.168.10.[0-9]{1,3}', $tested_host) OR (ereg('192.168.20.[0-9]{1,3}', $tested_host)) { ... }
Il ne semble pas possible, avec ereg ou preg_match, d'utiliser un tableau de pattern,
Et un pattern unique traitant tous les cas, ça ne t'irait pas ?
Par exemple le pattern suivant : '/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/'
Ou plus simplement : '/192.168.(0|10|20).[0-9]{1,3}/'
Voire : '/192.168.[12]?0.[0-9]{1,3}/'
Tant que j'y suis, il serait peut-être une bonne idée de tester le '.' en tant que tel, plutôt que « tout caractère ». Donc : '/192.168.[12]?0.[0-9]{1,3}/'
J'avais bien pensé à faire un preg_replace du genre: preg_replace($hosts, "authorized", $tested_host); if ($tested_host == "authorized") { ... }
Oui, c'est aussi une possibilité. Bien vérifier qu'il ne peut pas être mis à "authorized" par le visiteur.
CrazyCat
Et un pattern unique traitant tous les cas, ça ne t'irait pas ? Par exemple le pattern suivant : '/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/' Ou plus simplement : '/192.168.(0|10|20).[0-9]{1,3}/' Voire : '/192.168.[12]?0.[0-9]{1,3}/'
Malheureusement, non: l'exemple donné est assez mauvais, car il s'agit en fait des IP des partenaires autorisés, donc les masques peuvent être très différents (premier point) et la liste doit être facilement lisible (gérée plus ou moins depuis un backoffice par des personnes peu qualifiées).
J'avais bien pensé à faire un preg_replace du genre: preg_replace($hosts, "authorized", $tested_host); Oui, c'est aussi une possibilité. Bien vérifier qu'il ne peut pas être
mis à "authorized" par le visiteur.
Bien sur: il n'y a rien de trop confidentiel, c'est bien de la limitation d'accès et pas la mise en place d'un defcon :)
-- Astuces pour webmasters: http://www.crazycat.info Tchat francophone: http://www.crazy-irc.net
Et un pattern unique traitant tous les cas, ça ne t'irait pas ?
Par exemple le pattern suivant :
'/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/'
Ou plus simplement :
'/192.168.(0|10|20).[0-9]{1,3}/'
Voire :
'/192.168.[12]?0.[0-9]{1,3}/'
Malheureusement, non: l'exemple donné est assez mauvais, car il s'agit
en fait des IP des partenaires autorisés, donc les masques peuvent être
très différents (premier point) et la liste doit être facilement lisible
(gérée plus ou moins depuis un backoffice par des personnes peu qualifiées).
J'avais bien pensé à faire un preg_replace du genre:
preg_replace($hosts, "authorized", $tested_host);
Oui, c'est aussi une possibilité. Bien vérifier qu'il ne peut pas être
mis à "authorized" par le visiteur.
Bien sur: il n'y a rien de trop confidentiel, c'est bien de la
limitation d'accès et pas la mise en place d'un defcon :)
--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net
Et un pattern unique traitant tous les cas, ça ne t'irait pas ? Par exemple le pattern suivant : '/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/' Ou plus simplement : '/192.168.(0|10|20).[0-9]{1,3}/' Voire : '/192.168.[12]?0.[0-9]{1,3}/'
Malheureusement, non: l'exemple donné est assez mauvais, car il s'agit en fait des IP des partenaires autorisés, donc les masques peuvent être très différents (premier point) et la liste doit être facilement lisible (gérée plus ou moins depuis un backoffice par des personnes peu qualifiées).
J'avais bien pensé à faire un preg_replace du genre: preg_replace($hosts, "authorized", $tested_host); Oui, c'est aussi une possibilité. Bien vérifier qu'il ne peut pas être
mis à "authorized" par le visiteur.
Bien sur: il n'y a rien de trop confidentiel, c'est bien de la limitation d'accès et pas la mise en place d'un defcon :)
-- Astuces pour webmasters: http://www.crazycat.info Tchat francophone: http://www.crazy-irc.net
Olivier Miakinen
Et un pattern unique traitant tous les cas, ça ne t'irait pas ? Par exemple le pattern suivant : '/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/' Ou plus simplement : '/192.168.(0|10|20).[0-9]{1,3}/' Voire : '/192.168.[12]?0.[0-9]{1,3}/'
Malheureusement, non: l'exemple donné est assez mauvais, car il s'agit en fait des IP des partenaires autorisés, donc les masques peuvent être très différents (premier point) et la liste doit être facilement lisible (gérée plus ou moins depuis un backoffice par des personnes peu qualifiées).
Rien ne t'empêche, malgré tout, d'en faire un masque unique en utilisant la syntaxe /(masque1|masque2|masque3|...|masqueN)/ au lieu de faire N tests successifs sur masque1, puis sur masque2, et ainsi de suite. Ce masque unique peut même être stocké quelque part, si les masques individuels changent rarement.
Et un pattern unique traitant tous les cas, ça ne t'irait pas ?
Par exemple le pattern suivant :
'/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/'
Ou plus simplement :
'/192.168.(0|10|20).[0-9]{1,3}/'
Voire :
'/192.168.[12]?0.[0-9]{1,3}/'
Malheureusement, non: l'exemple donné est assez mauvais, car il s'agit
en fait des IP des partenaires autorisés, donc les masques peuvent être
très différents (premier point) et la liste doit être facilement lisible
(gérée plus ou moins depuis un backoffice par des personnes peu qualifiées).
Rien ne t'empêche, malgré tout, d'en faire un masque unique en utilisant
la syntaxe /(masque1|masque2|masque3|...|masqueN)/ au lieu de faire N
tests successifs sur masque1, puis sur masque2, et ainsi de suite.
Ce masque unique peut même être stocké quelque part, si les masques
individuels changent rarement.
Et un pattern unique traitant tous les cas, ça ne t'irait pas ? Par exemple le pattern suivant : '/(192.168.0.[0-9]{1,3}|192.168.10.[0-9]{1,3}|192.168.20.[0-9]{1,3})/' Ou plus simplement : '/192.168.(0|10|20).[0-9]{1,3}/' Voire : '/192.168.[12]?0.[0-9]{1,3}/'
Malheureusement, non: l'exemple donné est assez mauvais, car il s'agit en fait des IP des partenaires autorisés, donc les masques peuvent être très différents (premier point) et la liste doit être facilement lisible (gérée plus ou moins depuis un backoffice par des personnes peu qualifiées).
Rien ne t'empêche, malgré tout, d'en faire un masque unique en utilisant la syntaxe /(masque1|masque2|masque3|...|masqueN)/ au lieu de faire N tests successifs sur masque1, puis sur masque2, et ainsi de suite. Ce masque unique peut même être stocké quelque part, si les masques individuels changent rarement.
CrazyCat
Rien ne t'empêche, malgré tout, d'en faire un masque unique en utilisant la syntaxe /(masque1|masque2|masque3|...|masqueN)/ au lieu de faire N tests successifs sur masque1, puis sur masque2, et ainsi de suite. Ce masque unique peut même être stocké quelque part, si les masques individuels changent rarement.
Oui, mais c'est relativement sale au niveau présentation du code. Les personnes pouvant éditer ce code ne sont pas des développeurs, donc un tableau bien présenté est plus facile à traiter :)
-- Astuces pour webmasters: http://www.crazycat.info Tchat francophone: http://www.crazy-irc.net
Rien ne t'empêche, malgré tout, d'en faire un masque unique en utilisant
la syntaxe /(masque1|masque2|masque3|...|masqueN)/ au lieu de faire N
tests successifs sur masque1, puis sur masque2, et ainsi de suite.
Ce masque unique peut même être stocké quelque part, si les masques
individuels changent rarement.
Oui, mais c'est relativement sale au niveau présentation du code.
Les personnes pouvant éditer ce code ne sont pas des développeurs, donc
un tableau bien présenté est plus facile à traiter :)
--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net
Rien ne t'empêche, malgré tout, d'en faire un masque unique en utilisant la syntaxe /(masque1|masque2|masque3|...|masqueN)/ au lieu de faire N tests successifs sur masque1, puis sur masque2, et ainsi de suite. Ce masque unique peut même être stocké quelque part, si les masques individuels changent rarement.
Oui, mais c'est relativement sale au niveau présentation du code. Les personnes pouvant éditer ce code ne sont pas des développeurs, donc un tableau bien présenté est plus facile à traiter :)
-- Astuces pour webmasters: http://www.crazycat.info Tchat francophone: http://www.crazy-irc.net