Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
794 connectés 

  FORUM HardWare.fr
  Programmation

  [PHP] protect antiflood -> comment faire avec proxy ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] protect antiflood -> comment faire avec proxy ??

n°91392
potiron
...
Posté le 21-01-2002 à 00:00:58  profilanswer
 

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 :(

mood
Publicité
Posté le 21-01-2002 à 00:00:58  profilanswer
 

n°91393
k666
dites non à petitmou
Posté le 21-01-2002 à 00:08:58  profilanswer
 

c un truc du style x_forwarded_for

n°91394
k666
dites non à petitmou
Posté le 21-01-2002 à 00:09:42  profilanswer
 

et au fait, j'ai pas menti!!!
(pour le postageee à <1s )
je fais backspace + f5 + enter
pas compliké ;)

n°91395
ethernal
Chercheur de vérité...
Posté le 21-01-2002 à 00:11:02  profilanswer
 

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]

n°91396
k666
dites non à petitmou
Posté le 21-01-2002 à 00:12:23  profilanswer
 

ah
c pas cool ça,
tu m'as banni mon ip et j'avais rien fait,
 :??:  
potiron mauvais joueur :jap:

 

[edtdd]--Message édité par k666--[/edtdd]

n°91399
potiron
...
Posté le 21-01-2002 à 01:00:31  profilanswer
 

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  :na:  :D  
 
ok, merci ethernal, je fonce tester tout ca .

 

[edtdd]--Message édité par potiron--[/edtdd]

n°91400
k666
dites non à petitmou
Posté le 21-01-2002 à 01:02:37  profilanswer
 

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!

n°91402
potiron
...
Posté le 21-01-2002 à 01:10:26  profilanswer
 

beuuuuuhhhh  :na:  
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 ...  :sarcastic:  
je m'enerve a chercher un probleme general alors que c'etait une seule personne qui postait a blanc ..

n°91403
k666
dites non à petitmou
Posté le 21-01-2002 à 01:14:38  profilanswer
 

ok potiron,
 
piss and love

n°91404
ethernal
Chercheur de vérité...
Posté le 21-01-2002 à 01:19:35  profilanswer
 

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() ??

mood
Publicité
Posté le 21-01-2002 à 01:19:35  profilanswer
 

n°91405
k666
dites non à petitmou
Posté le 21-01-2002 à 01:25:26  profilanswer
 

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... ?

n°91406
potiron
...
Posté le 21-01-2002 à 01:55:26  profilanswer
 

:heink:  
 
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  :sarcastic:  :D  
 
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]

n°91407
ethernal
Chercheur de vérité...
Posté le 21-01-2002 à 02:08:28  profilanswer
 

potiron a écrit a écrit :

:heink:  
 
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  :sarcastic:  :D  




 
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]

n°91411
potiron
...
Posté le 21-01-2002 à 02:44:17  profilanswer
 

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) ) ;
 }

n°91412
potiron
...
Posté le 21-01-2002 à 02:51:37  profilanswer
 

bon sang, c'est de + en + compliqué, je vais encore y passer quelques nuits blanches ...
 
bon, voici les vars a tester :

Citation :


<?
echo "REMOTE_ADDR = $REMOTE_ADDR";print("<hr>\n" );print("<hr>\n" );
echo "HTTP_VIA = $HTTP_VIA";print("<hr>\n" );print("<hr>\n" );
echo "HTTP_X_COMING_FROM  = $HTTP_X_COMING_FROM ";print("<hr>\n" );print("<hr>\n" );
echo "HTTP_X_FORWARDED_FOR  = $HTTP_X_FORWARDED_FOR ";print("<hr>\n" );print("<hr>\n" );
echo "HTTP_X_FORWARDED = $HTTP_X_FORWARDED";print("<hr>\n" );print("<hr>\n" );
echo "HTTP_COMING_FROM  = $HTTP_COMING_FROM ";print("<hr>\n" );print("<hr>\n" );
echo "HTTP_FORWARDED_FOR  = $HTTP_FORWARDED_FOR ";print("<hr>\n" );print("<hr>\n" );
echo "HTTP_FORWARDED = $HTTP_FORWARDED";print("<hr>\n" );print("<hr>\n" );
?>


 
si je passe par un proxy, j'ai ca :
 

Citation :

REMOTE_ADDR = 212.186.224.48
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
HTTP_VIA = HTTP/1.1 paris[0A0A0A01] (Traffic-Server/2.2 [uSc s f p eN:tOcS i p s ])
--------------------------------------------------------------------------------
 
--------------------------------------------------
------------------------------
HTTP_X_COMING_FROM  =  
--------------------------------------------------
------------------------------
 
--------------------------------------------------
------------------------------
HTTP_X_FORWARDED_FOR  =  
--------------------------------------------------
------------------------------
 
--------------------------------------------------
------------------------------
HTTP_X_FORWARDED =  
--------------------------------------------------
------------------------------
 
--------------------------------------------------
------------------------------
HTTP_COMING_FROM  =  
--------------------------------------------------
------------------------------
 
--------------------------------------------------
------------------------------
HTTP_FORWARDED_FOR  =  
--------------------------------------------------
------------------------------
 
--------------------------------------------------
------------------------------
HTTP_FORWARDED =  
--------------------------------------------------
------------------------------
 
--------------------------------------------------
------------------------------


 
 
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  :sarcastic:  :gun:

n°91465
k666
dites non à petitmou
Posté le 21-01-2002 à 12:18:01  profilanswer
 

potiron mon ip = tu la connais :D
212.198.190.68
 
ci mer;)

n°91468
ethernal
Chercheur de vérité...
Posté le 21-01-2002 à 12:22:24  profilanswer
 

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 ?

n°91644
potiron
...
Posté le 21-01-2002 à 18:31:01  profilanswer
 

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  :D  
 
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

n°91645
Max Evans
Posté le 21-01-2002 à 18:33:27  profilanswer
 

k666 a écrit a écrit :

ah
c pas cool ça,
tu m'as banni mon ip et j'avais rien fait,
 :??:  
potiron mauvais joueur :jap:  
 
 




 
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 ;)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°91657
potiron
...
Posté le 21-01-2002 à 18:57:38  profilanswer
 

ah non, la j'ai plus personne ..

n°91660
Max Evans
Posté le 21-01-2002 à 19:00:58  profilanswer
 

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 ;)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°91680
potiron
...
Posté le 21-01-2002 à 19:53:10  profilanswer
 

:??:  :??:  :??: 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]

n°91717
k666
dites non à petitmou
Posté le 21-01-2002 à 21:33:42  profilanswer
 

ok j'essaye toudsuite ;)

n°91718
k666
dites non à petitmou
Posté le 21-01-2002 à 21:35:57  profilanswer
 

ahyé
chuis banned :jap:  
 
maintenant, tu me débannes?

n°91722
k666
dites non à petitmou
Posté le 21-01-2002 à 21:44:26  profilanswer
 

au fait, potiron,
je me suis auto débanni
 
merci qd même ;)
 
 
:lol: !!!

n°91760
potiron
...
Posté le 21-01-2002 à 22:59:48  profilanswer
 

m'etonnerait  :sarcastic:  
tu as pas été bannie, c'est tout ...

n°91766
k666
dites non à petitmou
Posté le 21-01-2002 à 23:09:47  profilanswer
 

nananna
je t'assure je me suis débanni :D
 
delete from bannir where ip='21.......'

n°91784
potiron
...
Posté le 22-01-2002 à 00:13:15  profilanswer
 

tu peux pas lancer de requetes mysql ailleurs qu'en local (serveur) !

n°91786
k666
dites non à petitmou
Posté le 22-01-2002 à 00:18:07  profilanswer
 

allons ;)
allons mon cher potiron
tu me mets trop en doute ;) c marrant à la fin,
regarde bien ton "back orifice" :D
 
 
http://lorenzozo.kilio.com/_script [...] m%20bannir
 
et là je suis gentil ;)

n°91796
potiron
...
Posté le 22-01-2002 à 01:44:57  profilanswer
 

je l'avais oublié ca :)
 
gros malin va !
ca a rien a voir avec le forum ce script  ;)

 

[edtdd]--Message édité par potiron--[/edtdd]

n°91797
k666
dites non à petitmou
Posté le 22-01-2002 à 01:54:45  profilanswer
 

t convaincu que je ments pas ? :sweat:

n°91799
potiron
...
Posté le 22-01-2002 à 02:31:25  profilanswer
 

:ange:  :ange:  :ange:  oui ;)

 

[edtdd]--Message édité par potiron--[/edtdd]

n°91800
k666
dites non à petitmou
Posté le 22-01-2002 à 02:40:52  profilanswer
 

ahhhhhhhhhhh :wahoo:  
 
je peux aller dormir en paix maintnant  :sleep:  
 
 
allez mec,
bon forum!!! :pt1cable:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PHP] protect antiflood -> comment faire avec proxy ??

 

Sujets relatifs
[PHP] Aide sur les chaine de charactereRecherche d'images en PHP
[PHP/mysql] importer blob dans un forum [VERY URGENT][PHP] Comment gérer plusieurs blocs textes ???
[ JS et PHP ][PHP] Le contraire de bin2hex ??
[PHP]Remplacement de caractere speciaux ![PHP] moteur de recherche (tout petit :D)
[PHP] rediriger une pagec'est confirmé free est en PHP 4.1.1
Plus de sujets relatifs à : [PHP] protect antiflood -> comment faire avec proxy ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR