2BanOrNot2Ban

Door Gerard Nijboer, 20 jaar geleden, 5.083x bekeken

Dit script blokkeert toegang tot je website voor bepaalde gebruikers via een whitelist of blacklist.
Dit doet hij door te kijken wat je IP adres is, of hij in de lijst staat en zo ja, of je dan wel of niet toegang moet krijgen.

Ook te downloaden via mirrors beschikbaar op de mirrors.

Vragen en / of opmerkingen?
Laat het me weten!

Gesponsorde koppelingen

PHP script bestanden

  1. 2banornot2ban

 

Er zijn 25 reacties op '2banornot2ban'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Vincent
Vincent
20 jaar geleden
 
0 +1 -0 -1
Mirror 1 (.zip, 12.9 MB) ?
volgens mij eerder 12.9 kb
Gerard Nijboer
Gerard Nijboer
20 jaar geleden
 
0 +1 -0 -1
Ook goed :P
Ik weet niet of dit de correcte vorm van een script plaatsen is, en of het wel wordt gewaardeerd zo, maar ik had niet echt zin om heel m'n broncode te plaatsen.
Sorry daarvoor.
Jelmer -
Jelmer -
20 jaar geleden
 
0 +1 -0 -1
Als je het script zelf hier ook nog even plaatst (al die extra HTML hoeft er niet omheen op zich) dan kunnen mensen het script ook nog downloaden wanneer de link niet meer bestaat.

En *ja maar hij blijft wel bestaan* is geen goed argument om het niet te doen. Want dat kan je misschien nu garanderen, maar over 3 jaar nog steeds?

Daarnaast is het wel prettig als mensen gewoon de essentie van de code al kunnen zien zonder de extra download-dit&dat stappen. Kunnen we tenminste inhoudelijk commentaar geven :)
Gerard Nijboer
Gerard Nijboer
20 jaar geleden
 
0 +1 -0 -1
Oké ik pas het zo aan, momentje.
Erik Rijk
Erik Rijk
20 jaar geleden
 
0 +1 -0 -1
Ik vind niet dat het iets toevoegd eigenlijk, het is erg simpel en er staan al meerdere soortgelijke systemen in de scriptlib.
Gerard Nijboer
Gerard Nijboer
20 jaar geleden
 
0 +1 -0 -1
Zo, het is nu volledig aangepast, het benodigde script is er.
Ik weet dat het eigenlijk niet veel voorstelt maar ik ben zelf niet pro in programmeren in PHP en aangezien ik overal commentaar in het script heb toegevoegd hoop ik dat mensen die er wat aan hebben er ook wat van leren.


20 jaar geleden
 
0 +1 -0 -1
Veel commentaart, weinig code. 2:1 gok ik zo, als het al niet meer is.
Verder vind ik dit niet iets toevoegen. Ook kan je met honderdduizende proxy's dit gewoon omzeilen.
Arend a
Arend a
20 jaar geleden
 
0 +1 -0 -1
die () is niet zo netjes. Exit is beter.
Pim Vernooij
Pim Vernooij
20 jaar geleden
 
0 +1 -0 -1
@Arend: oh ja?
PHP-Manual:
die

(PHP 4, PHP 5)

die — Equivalent to exit()
Wouter K
Wouter K
20 jaar geleden
 
0 +1 -0 -1
Ok goed ,Maar mijn proxy is daar ook aangedacht ?
Hipska BE
Hipska BE
20 jaar geleden
 
0 +1 -0 -1
waarom is ip 123.345.567.789 al meteen gebanned?
Gerben Jacobs
Gerben Jacobs
20 jaar geleden
 
0 +1 -0 -1
Weet je hoe l33t je bent als je dat IP hebt, Hipska.


20 jaar geleden
 
0 +1 -0 -1
Helemaal geen meerwaarde -> Prullebak. Sorry maar kan er niet meer van maken. Natuurlijk wel fijn dat je tenminsten iets post maar zorg ervoor dat het toch wat uitgebreider is ;) en dus meer functionaliteit heeft.
Joren de Wit
Joren de Wit
20 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var_2banornot2ban_ip
= $_SERVER['REMOTE_ADDR'];
?>

Beetje jammer alleen dat dit niet echt heel betrouwbaar is...
Maarten
Maarten
20 jaar geleden
 
0 +1 -0 -1
RE: Blanche

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var_2banornot2ban_ip
= $_SERVER['REMOTE_ADDR'];
?>



Beetje jammer alleen dat dit niet echt heel betrouwbaar is...
---
Wat is er dan niet betrouwbaar aan?
Joren de Wit
Joren de Wit
20 jaar geleden
 
0 +1 -0 -1
$_SERVER['REMOTE_ADDR'] zal niet in alle gevallen het IP adres van de gebruiker teruggeven. Bijvoorbeeld als de gebruiker via een proxyserver met het internet verbonden is, zal deze variabele het ip-adres van de proxyserver bevatten...

Zelf gebruik ik deze functie op het ip-adres te bepalen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function getip()
{

    if(@$_SERVER['HTTP_X_FORWARDED_FOR'])
    {

        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    }

    elseif(@$_SERVER['HTTP_CLIENT_IP'])
    {

        return $_SERVER['HTTP_CLIENT_IP'];
    }

    else
    {
        return $_SERVER['REMOTE_ADDR'];
    }
}

?>

Dit is al beter, maar geeft ook nog geen 100% garanties dat je het ip-adres van de gebruiker te pakken krijgt...
Jelmer -
Jelmer -
20 jaar geleden
 
0 +1 -0 -1
De grap is dat alle waarden in $_SERVER waarvan de naam begint met HTTP_ hun oorsprong vinden in HTTP headers. HTTP headers kan je de gebruiker zelf definiëren. Via een socket (of voor mijn part telnet!) kan ik je site aanroepen en zelf een leuke "X-Forwarded-For: doemaarwat" meesturen. In weze is die dus eigenlijk alleen maar onbetrouwbaarder, want op die manier wordt mijn REMOTE_ADDR door dat scriptje niet meer opgeslagen. En daar had ik niet eens een proxy voor nodig!

Wat nog erger is, en dat realiseren veel mensen zich dan weer niet, is dat HTTP_X_FORWARDED_FOR op dezelfde manier behandeld moet worden als waarden uit $_GET en $_POST wanneer magic-quotes-gpc uitstaat: dus oppassen voor quotes, html, nulbytes, etc.
Joren de Wit
Joren de Wit
20 jaar geleden
 
0 +1 -0 -1
Klopt dat zijn zeker punten waar je rekening mee moet houden. Echter denk ik dat je wel het eigenlijke doel voor ogen moet houden, en dat is het achterhalen van het IP adres en de manier waarop je dat het beste zou kunnen doen.

Een ip-adres valt natuurlijk altijd te verbergen en zoals gezegd is de informatie nooit 100% betrouwbaar. Alleen zullen de meeste mensen die hun ip-adres willen maskeren, gebruik proberen te maken van een proxyserver. Ik gok er dan dus op dat deze een x-forwarded-for header meestuurt waardoor het ip-adres alsnog te achterhalen is. Als de gebruiker al zo zijn best doet om deze header dan ook nog eens handmatig aan te passen, tja dan zal hij er ook zeker rekening mee gehouden hebben dat de remote_addr ook niet zijn ip-adres bevat. Dus dan zal er van die gebruiker geen ip-adres bekend zijn, so be it.

Wat je zegt over de veiligheid van de waarde die de functie teruggeeft is natuurlijk wel waar! Vergeet er nooit een mysql_real_escape_string() oid overheen te halen als je de data bijvoorbeeld wegschrijft naar een database. Maar goed, dat zou je sowieso moeten doen met de meeste variabelen die uit de $_SERVER array komen.
Gerard Nijboer
Gerard Nijboer
20 jaar geleden
 
0 +1 -0 -1
Ik ben wel blij dat mijn stomme script zulke geavanceerde discussies oproept! :-P
Jullie vinden het toch niet erg als ik vanaf het punt na de proxyserver afhaak?
Want ik snap echt niet meer wat jullie allemaal bedoelen. :-P
Maar goed, dit script is absoluut te omzeilen, dat geef ik toe.
Misschien dat één van jullie het wilt aanpassen zodat het niet of moeilijk te omzeilen is? :-P
Nee hoor, geintje, laat het maar gewoon bij wat het is, ik ben blij dat ik iets dergelijks als dit heb kunnen maken, dat is al een hele prestatie voor een beginner als ik.
Noi92rotterdam
noi92rotterdam
18 jaar geleden
 
0 +1 -0 -1
ik mis volgens mij iets. waar moet je de ip die je wilt bannen worden ingevult?
Gerard Nijboer
Gerard Nijboer
18 jaar geleden
 
0 +1 -0 -1
je hebt zeker wat gemist, in het bestand data/list kan je per regel een ip adres toevoegen
Michael -
Michael -
18 jaar geleden
 
0 +1 -0 -1
Je mirrors doen 't nu al niet meer.
Gerard Nijboer
Gerard Nijboer
18 jaar geleden
 
0 +1 -0 -1
Klopt, maar het hele script staat hier op de site, ik geloof dat het dan ook nog weinig nut heeft om te downloaden via de mirror.
Roel -
Roel -
18 jaar geleden
 
0 +1 -0 -1
3/4 van dit script is comments. Je kan overigens beter een database gebruiken voor dit soort spul. Tegenwoordig is zo'n script overigens nutteloos, er bestaan duizenden en duizenden proxies. Als je een gebruiker systeem hebt ban je die gewoon.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Maurice
maurice
17 jaar geleden
 
0 +1 -0 -1
ik gebruik hem!

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. 2banornot2ban

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.