IP ban

Zdravím všechny, vytvořil sem následující skriptík - začátek indexu.php:

<?php

$banan = <<<HTXT
< jednoducha html stranka, kerá řekne návštěvníkovi, že má smůlu />
HTXT;

/* */

if ((preg_match("~82.100.~", $REMOTE_ADDR)) && ($REMOTE_ADDR != "82.100.255.255"))
die (printf("$banan"));

?>

<? zbytek indexu.php ?>

Takhle věc zakáže všem uživatelům, jejichž IP začíná 88.100 přístup na můj index.php a zároveň ho povolí mě, páč moje IP začíná stejně. Co si o tom myslíte, dá se to udělat efektivněji?

Díky za rady ;-)
.htaccess
To umím taky, ale jak chceš v .htaccess nastavit BANán pro všechny jejichž IP začíná zmíněným řetězcem?
Mike: Blok ades, začínajících na (dejmetomu 213.250) můžeš v htaccess zablokovat pomocí deny from 213.250 ...

---
Motto: When? Simply never!
jasny, jenze hlavni smysl tady tohodle je zobrazeni ty stranky, pri pristupu z ip ktera takto zacina. jinak bych to taky nejak vysmelil v tom htaccessu...
Aha .. tak to já neřeším. Mě je úplně jedno, jestli zablokovaná IP vidí hlášku "Přístup zamítnut", nebo "Tebe nemám rád, nepustim tě sem". Prostě mu strčím HTTP 1.1 403 a ať si to přebere jak chce. Štval mě, tak co se s ním budu prdět, ne?

BTW: víš že IP bany pomalu vycházejí z módy? ;)
Co třeba

ErrorDocument 403 /errors/forbid.html

?
De o to, že to je taková šmela na jednoho neznámého uživatele - prostě takový pokus zjisti čísi identitu... ale to tu moc nechcu rozvíjet...

Non_E: No ale mám pocit, že když dám do .htaccessu "deny from" tak se nenačte jediná stránka... takže ani 403ka...
Mike: já to na lokále zkoušel a šlape podle mých představ. Zkoušel jsi to taky?
Myslíš to mý? Už to mám potvrzený aj od kamošky, že to fachá. Udělal sem jí další vyjímku, a fachá to spravně :)
Myslel jsem tvoji připomínku z 25. 01. 2007 17:48.
No tak sem to teď zkoušel přímo na webu, a nedostanu se ani k ty 403ce. Takže bych řek, že přes ten .htaccess fakt nee...
Nevím, jak to děláš, ale zkus http://rada.borec.cz/pokusy/403/

Adresář obsahuje jen .htaccess. Soubor s phpinfo je v kořenovém adresáři mého webu.

ErrorDocument 403 /phpinfo.php
Order Allow,Deny
Deny from all
>> Non_E: jj, todle fachá - tady mám adresář, kde .htaccess jen s deny from all. Zkus ale todle:

Order Allow,Deny
Deny from .cz
Deny from TvojeIP

Když to dáš do .htaccessu v kořenovým adresáři, tak se nedostaneš ani k ty 403ce... :oD Btw ty máš jako 403ku phpinfo? Nevím, ale nepřipadne mi to jako nejlepší nápad...
No samozřejmě, že se k ní v tvém případě nedostanu, protože apache hodí "Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.". Já se ti snažím jen dokázat, že apache nastavený error dokument klientu předat zkouší. Jestli si to chceš ověřit, tak si vytvoř adresář třeba jménem error a do něj dej jiný .htaccess s

Order Allow,Deny
Allow from all

a taky tam dej stránky s chybovým hlášením. V kořenovém adresáři ti zůstane tvůj .htaccess s

ErrorDocument 403 /error/forbid.htm
Order Allow,Deny
Deny from .cz
Deny from cokoliv

Jak to funguje: apache zkontroluje podmínky v Order a pak zkusí vzít nastavený ErrorDocument. Jelikož tentokrát k určenému errordokumentu přistupovat může (.htaccess v adresáři error má allow from all), zobrazí ho.

Ad 403 u mě: pro účely testování Order a ErrorDocument v http://rada.borec.cz/pokusy/403/ je phpinfo jednoduchým a prokazatelným ukazatelem funkčnosti. Samozřejmě že ho jako chybovou stránku prezentace nepoužívám.
a co treba (pro zakaz 100.200.*.* ):
RewriteEngine On

RewriteCond <%{REMOTE_ADDR} 100.201
RewriteCond >%{REMOTE_ADDR} 100.200
RewriteRule (.*) /banan.php

(mozna je to spatne napsane, netestoval jsem to)
Vice viz http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteCond .
tohle: proč to dělat jednoduše, když to jde složitě?
deny from 100.200
a mám to, co ty na třech řádcích. Optimalizace, čéče, to teď hejbe světem ;)
Tome, ale my tu hledame způsob, aby apache návštěvníkovi ještě dal vybranou stránku s errorem (tj. abychom ukázali, že první post obsahuje funkcionalitu, ktere lze dosahnout jednoduse jen s apcache).
>> Non_E 26. 01. 2007 14:41: už sem tě konečně pochopil ;-)
>> Tohe: velmi... error 500, a můj vlatní 500 to taky nevezme :)
>> Tom: de o to, že já potřebuju návštěvníkovi s IP začínající 82.100 podstrčit unikátní stránku. Moje IP začíná stejně, a sobě ale nic podstrkávat nechcu...

No rozpoutal sem tu zajmavou diskuzi :oD Ten můj skriptík zatím celkem funguje, jen sem se ptal po jednodušším řešení :) A ty tutoriály k .htaccessu číst odmítám, páč je to anglicky a chaoticky a čert aby se v tom vyznal...
Jasně, ale pořád nechápu, proč při běžném "403 - Forbidden" dávat jednu stránku a při blokování IP, jinou?! To se mi zdá celkem přehnané. Já osobně bych to řešil hlavičkami: 403 - "běžné" blokování, 401 - IP ban. Sice to není zrovna podle norem, ale je to jednodušší, než vymýšlet nějaká složitá pravidla.