ntec Skrevet 9. mars 2008 Del Skrevet 9. mars 2008 Jeg har laget en banlist på websiden min pga ddos-lignende angrep fra flere tusen IP-er. Listen har blitt så lang, og mange IP-er ser ganske like ut... Eksempel: 74.6.*.* Per i dag har jeg lagret IP-ene i en array - $antiflood_banlist og bruker if in_array() for å stoppe besøkende som er i banlista. $antiflood_banlist = ('74.6.1.24', '1.1.1.2.', '10.0.0.1', '74.6.223.6'); if(in_array($_SERVER['REMOTE_ADDR'], $antiflood_banlist)) { echo "Din IP er bannet."; } Hvordan kan jeg stenge ute IPer med jokertegn? Ønsker å banne 74.6.*.* med flere. Håper på hjelp Lenke til kommentar
itsmebth Skrevet 9. mars 2008 Del Skrevet 9. mars 2008 (endret) Se på fnmatch (http://php.net/fnmatch) Endret 9. mars 2008 av itsmebth Lenke til kommentar
ntec Skrevet 10. mars 2008 Forfatter Del Skrevet 10. mars 2008 Se på fnmatch (http://php.net/fnmatch) hvordan kan denne kobles opp mot en array med IPer? Lenke til kommentar
pulse Skrevet 10. mars 2008 Del Skrevet 10. mars 2008 Tror nok beste alternativet er en regex. Men hved dessverre ikke hvordan den burde skrives. I mellomtiden kan du jo kikke på: substr(); og strpos(); Lenke til kommentar
JohndoeMAKT Skrevet 11. mars 2008 Del Skrevet 11. mars 2008 SELECT id FROM bannedIps WHERE from <= INET_ATON( $_SERVER['REMOTE_ADDR'] ) AND to >= INET_ATON( $_SERVER['REMOTE_ADDR'] ); Om du ikke har dette i en MySQL-database ( som du bør ha ) kan du bruke ip2long() og lagre maks og min verdier i en range. 192.168.*.* blir if ( ip2long( $_SERVER['REMOTE_ADDR'] ) >= ip2long( 192.168.0.0 ) && ip2long( $_SERVER['REMOTE_ADDR'] ) <= ip2long( 192.168.255.255 ) ) { fireZeLazers(); } Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå