protect antiflood -> comment faire avec proxy ?? [PHP] - Programmation
Marsh Posté le 21-01-2002 à 00:09:42
et au fait, j'ai pas menti!!!
(pour le postageee à <1s )
je fais backspace + f5 + enter
pas compliké
Marsh Posté le 21-01-2002 à 00:11:02
si $HTTP_X_FORWARDED_FOR est défini alors il y a un proxy entre le site et le client.
$ip= getenv("HTTP_X_FORWARDED_FOR" ) ? getenv("HTTP_X_FORWARDED_FOR" ) : getenv("REMOTE_ADDR" );
mais il faut tester si l'adresse obtenue n'est une adresse hors-internet (192.168.0.x, ...) (genre qq qui a un proxy sur sa machine connectée au web)
[edtdd]--Message édité par ethernal--[/edtdd]
Marsh Posté le 21-01-2002 à 00:12:23
ah
c pas cool ça,
tu m'as banni mon ip et j'avais rien fait,
potiron mauvais joueur
[edtdd]--Message édité par k666--[/edtdd]
Marsh Posté le 21-01-2002 à 01:00:31
k666 a écrit a écrit : et au fait, j'ai pas menti!!! (pour le postageee à <1s ) je fais backspace + f5 + enter pas compliké |
ben en tout cas en local donc instantané j'y arrive pas aussi vite ...
NON, je t'ai pas bannie --> tu as du faire l'andouille et le script PHP du forum ta bannie !!
j'avais bien dit que j'ai rajouté une protection antiflood
ok, merci ethernal, je fonce tester tout ca .
[edtdd]--Message édité par potiron--[/edtdd]
Marsh Posté le 21-01-2002 à 01:02:37
mec
keskil faut que je fasse pour que tu me croies?
keske tu crois que j'ai à fouttre de te mentir?
tu crois que je suis mythoµ?
j'essaye simplement de contribuer à que tu fasses ton forum au mieux,
c d'ailleurs ce que tu cherches,
des béta tests, des critiques, etc...
ou alors tu préfères qu'on dise stérilement "super..." ?
voilà,
salut!
Marsh Posté le 21-01-2002 à 01:10:26
beuuuuuhhhh
fait pas la gueule tu es pas un monstre
oui, je suis d'accord pour les tests mais pas pour les coups dans le dos SANS explications comme j'en ai eu pas mal au debut ...
je m'enerve a chercher un probleme general alors que c'etait une seule personne qui postait a blanc ..
Marsh Posté le 21-01-2002 à 01:19:35
potiron a écrit a écrit : ok, merci ethernal, je fonce tester tout ca . |
de rien
si tu trouves un moyen rapide pour tester si c'est une adresse interne, je suis preneur
dans phpBB ils testent ça comme ça :
if( !empty($HTTP_X_FORWARDED_FOR) )
{
$client_ip = ( preg_match("/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/", $HTTP_X_FORWARDED_FOR, $ip_list) ) ? $ip_list[0] : $REMOTE_ADDR;
}
else
{
$client_ip = $REMOTE_ADDR;
}
$user_ip = encode_ip($client_ip)
mais je ne vois pas bien ce que fait le preg_match() ??
Marsh Posté le 21-01-2002 à 01:25:26
bin je crois qu'il regarde si ya une suite de n chiffres séparé d'un point, séparée de m chiffre et blabla... ?
Marsh Posté le 21-01-2002 à 01:55:26
ethernal : c'est sympa mais .....
je voulais pas regarder ce que fait phpBB ou un autre pour eviter justement de m'en inspirer et la je tombe pile dessus
bon pas grave ... de toute facon j'ai deja fait une entorse a mon reglement a cause de la compression GZIP (je voulais verifier si la mienne fonctionnait et enfin de comtpe j'ai laissé celle de phpBB ... pour l'instant) ..
pour l'ip il verifie qu'il y a que des chiffres mais je me demande bien pourquoi ??!!
k666 : passe moi ton IP que je vire le ban .
----
j'ai rien dit, y a qu'une seule personne qui est bannie ...
[edtdd]--Message édité par potiron--[/edtdd]
Marsh Posté le 21-01-2002 à 02:08:28
potiron a écrit a écrit : ethernal : c'est sympa mais ..... je voulais pas regarder ce que fait phpBB ou un autre pour eviter justement de m'en inspirer et la je tombe pile dessus |
oups, sorry alors
le premier post c'est la méthode que j'ai utilisé pour mon forum précédent, mais j'ai été vérifier chez d'autres juste après avoir posté histoire d'être sûr (les pros savent souvent mieux)
je comprends pas non plus pq ils vérifient que c des chiffres...
[edtdd]--Message édité par ethernal--[/edtdd]
Marsh Posté le 21-01-2002 à 02:44:17
rouuungt'diou !!
j'arrive pas a trouver la moindre info sur : HTTP_X_FORWARDED_FOR -> rien dans la DOC PHP
pour l'ip avec la reg exp j'imagine qu'il veut eviter les IP du genre : proxy.chello.fr ??
bon, en plus y a une erreur dans le script de phpBB, il prend pas en compte tous les cas possible ..
oh bordel, c'est encore plus compliqué que je l'aurais imaginé pour avoir une identification sans faille car de toute facon on choppe l'adresse IP du proxy ...
---------
tiens, pour ta question :
if($HTTP_X_FORWARDED_FOR)
{
// case 1.A: proxy && HTTP_X_FORWARDED_FOR is defined
$b = ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}",
$HTTP_X_FORWARDED_FOR, $array) ;
if ($b && (count($array)>=1) )
{ return ( gethostbyaddr($array[0]) ) ; } // first IP in the list
else
{ return ( $REMOTE_ADDR . '_' . $HT
TP_VIA . '_' . $HTTP_X_FORWARDED_FOR )
; }
}
elseif($HTTP_X_FORWARDED)
{
// case 1.B: proxy && HTTP_X_FORWARDED is defined
$b = ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}",
$HTTP_X_FORWARDED, $array) ;
if ($b && (count($array)>=1) )
{ return ( gethostbyaddr($array[0]) ) ; } // first IP in the list
else
{ return ( $REMOTE_ADDR . '_' . $HT
TP_VIA . '_' . $HTTP_X_FORWARDED ) ; }
}
elseif($HTTP_FORWARDED_FOR)
{
// case 1.C: proxy && HTTP_FORWARDED_FOR is defined
$b = ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}",
$HTTP_FORWARDED_FOR, $array) ;
if ($b && (count($array)>=1) )
{ return ( gethostbyaddr($array[0]) ) ; } // first IP in the list
else
{ return ( $REMOTE_ADDR . '_' . $HT
TP_VIA . '_' . $HTTP_FORWARDED_FOR ) ;
}
}
elseif($HTTP_FORWARDED)
{
// case 1.D: proxy && HTTP_FORWARDED is defined
$b = ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}",
$HTTP_FORWARDED, $array) ;
if ($b && (count($array)>=1) )
{ return ( gethostbyaddr($array[0]) ) ; } // first IP in the list
else
{ return ( $REMOTE_ADDR . '_' . $HT
TP_VIA . '_' . $HTTP_FORWARDED ) ; }
}
elseif($HTTP_VIA)
{
// case 2:
// proxy && HTTP_(X_) FORWARDED (_FOR) not defined && HTTP_VIA defined
// other exotic variables may be defined
return ( $HTTP_VIA .
'_' . $HTTP_X_COMING_FROM
.
'_' . $HTTP_COMING_FROM
) ;
}
elseif( $HTTP_X_COMING_FROM || $HTTP_COMING_FRO
M )
{
// case 3: proxy && only exotic variables defined
// the exotic variables are not enough, we add the REMOTE_ADDR of the proxy
return ( $REMOTE_ADDR .
'_' . $HTTP_X_COMING_FROM
.
'_' . $HTTP_COMING_FROM
) ;
}
else
{
// case 4: no proxy
// or tricky case: proxy+refresh
return ( gethostbyaddr($REMOTE_ADDR) ) ;
}
Marsh Posté le 21-01-2002 à 02:51:37
bon sang, c'est de + en + compliqué, je vais encore y passer quelques nuits blanches ...
bon, voici les vars a tester :
Citation : |
si je passe par un proxy, j'ai ca :
Citation : REMOTE_ADDR = 212.186.224.48 |
donc tu vois ce que je disais ?
phpBB ce plante complet en testant HTTP_X_FORWARDED_FOR mais j'ai dans l'idée que le resultat var etre different suivant le serveur ou tourne le dernier proxy
Marsh Posté le 21-01-2002 à 12:22:24
le HTTP_VIA est gérée par le proxy du client. souvent y a rien d'indiqué (entêtes http).
s'il y a un proxy, HTTP_X_FORWARDED_FOR est l'ip du client. sauf dans le cas ou le proxy est un proxy anonyme. Dans ce cas pas moyen d'avoir l'ip réelle du client et seul REMOTE_ADDR est défini (=ip du proxy)
d'ou viennent tes autres variables (HTTP_FORWARDED, HTTP_COMING_FROM, ...) ? j'ai jamais vu tout ça, tu as une page de doc ?
Marsh Posté le 21-01-2002 à 18:31:01
k666 : ben non je la connais pas, elles sont stockés en md5 (crypté) mais c'est bon , y avait qu'une personne de bannie donc ca pouvait etre que la tienne
ethernal : pour la page de DOC il faut voir apache ... ou celles la (mais tu as tout sur apache) :
http://www.geocrawler.com/archives [...] 0/6269552/
http://www.zope.org/Members/TWilson/GettingVisitorsIP
Marsh Posté le 21-01-2002 à 18:33:27
k666 a écrit a écrit : ah c pas cool ça, tu m'as banni mon ip et j'avais rien fait, potiron mauvais joueur |
Meuh, t'aurais pas NOOS par hasard ?
Parce que g fais le con, et g ete banni
G changé d'ip, et g t tjs banni, donc je pense que ton sytement de bannissement ne prends pas en compte les IP reelle, mais les IP serveur
Marsh Posté le 21-01-2002 à 19:00:58
L'adresse IP, c t pas un truc du style : 195.132.82.1 ?
PArce que si c t ca, c le serveur NOOS
D'ailleurs, je suis plus banni
En debannissant K666, tu l'as fais pour moi aussi
Marsh Posté le 21-01-2002 à 19:53:10
je peux pas savoir l'IP, elles sont cryptés mais je crois que je vais virer ca tant que j'ai pas regler tous les problemes ..
bon alors y a un probleme !?
il faut donc bien que je mette cette authentification avancé d'ip
k666 : tu peux faire un floood sur le forum (dans un sujet plutot que des nouveaux sujets ...) histoire de verifier le probleme .. stp ?
[edtdd]--Message édité par potiron--[/edtdd]
Marsh Posté le 21-01-2002 à 21:44:26
au fait, potiron,
je me suis auto débanni
merci qd même
!!!
Marsh Posté le 21-01-2002 à 23:09:47
nananna
je t'assure je me suis débanni
delete from bannir where ip='21.......'
Marsh Posté le 22-01-2002 à 00:13:15
tu peux pas lancer de requetes mysql ailleurs qu'en local (serveur) !
Marsh Posté le 22-01-2002 à 00:18:07
allons
allons mon cher potiron
tu me mets trop en doute c marrant à la fin,
regarde bien ton "back orifice"
http://lorenzozo.kilio.com/_script [...] m%20bannir
et là je suis gentil
Marsh Posté le 22-01-2002 à 01:44:57
je l'avais oublié ca
gros malin va !
ca a rien a voir avec le forum ce script
[edtdd]--Message édité par potiron--[/edtdd]
Marsh Posté le 22-01-2002 à 02:40:52
ahhhhhhhhhhh
je peux aller dormir en paix maintnant
allez mec,
bon forum!!!
Marsh Posté le 21-01-2002 à 00:00:58
salut,
je viens d'avoir une tres bonne idée pour une protection antiflood meme avec un forum ouvert (sans authentifiation) mais j'ai des questions ..
je recup$REMOTE_ADDR qui est la seule info sur le client dont je suis puisse etre sur ... mais comment ca fonctionne avec les proxys ??
si 10 personnes passent pas le meme proxy, j'aurais donc 10 fois la meme IP ??
si oui, comment contourner ce probleme ?
je peux pas utiliser $REMOTE_HOST a cause des serveurs linux