Tillhör: forum.tornevall.net
Titel: Hantering av Web-OPM
Version: 1.0.0
Dokumentid: OPM-01
Författare:TT/TMM
Revisionsdatum: 2007-04-22
Författningsdatum: 2007-04-11
Sidor: 4
GrundlÀggande hantering av WEB-OPM
Denna dokumentation Àr gjord som en grundlÀggande upplysning kring proxyhantering och Àr ej gjord för skarp tillÀmpning pÄ webbsidor dÄ koden Àr extremt inkomplett. Beslutar du dig ÀndÄ för att anvÀnda koden pÄ nÄgot sÀtt, för eget bruk, görs detta pÄ eget ansvar och författaren av denna text tar sÄledes ej ansvar för nÄgra problem som pÄ grund av detta kan uppstÄ! Ej heller finnes krav pÄ författaren att ge support och stöd under nÄgra omstÀndigheter, om sÄ önskas.
Bakgrund
I takt med utvecklingen och mÀnniskors erfarenhet pÄ Internet blir metoderna allt mer sofistikerade i jakten pÄ att nÄ fram dit man vill. För att stÀrka sin egen anonymitet ytterligare, sÄ anvÀnds ibland sÄ kallade proxys. Det kan Àven röra sig om exempelvis spam, datorintrÄng eller andra metoder som krÀver anonymitet eller hög personintegritetsskydd.
Det engelska ordet "proxy" översÀtts i det hÀr sammanhanget till "ombud". En proxyserver kan alltsÄ anvÀndas som ett ombud pÄ nÀtet. En proxy anvÀnds ofta i samband med sÀkerhet, som en modul i en brandvÀgg. Webbproxyn Àr en proxy för http-protokollet, det som anvÀnds för webbsidor bÄde internt och externt. I samband med proxy anvÀnds ofta en cache, ett minne dÀr man lagrar sidor för att snabba upp Ätkomsten för anvÀndarna.
I princip anvÀnds en proxy normalt pÄ följande vis: om man som internetkund har en brandvÀgg kan man förenkla sitt surfande genom att anvÀnda en proxy, eftersom den kommer skydda den egna datorn mot intrÄng. En proxy sparar ocksÄ, som nÀmns ovan, ned allt surfmaterial pÄ hÄrddisk vilket innebÀr att nÀsta gÄng man surfar till en webbsida som datum-mÀssigt Àr oförÀndrad, sÄ Àr det proxyn som ger webblÀsaren informationen. Vissa internetleverantörer har gjort pÄ detta vis, eftersom man i viss mÄn kan fÄ ner antalet trÀffar mot internet och dÀrmed spara bandbredd.
Alla internetkunder/företag stĂ€ller dock inte alltid in sina proxys korrekt. Detta orsakar stora sĂ€kerhetsbrister pĂ„ deras datorer och medför att andra obehöriga internetanvĂ€ndare kan missbruka deras tjĂ€nster. Dagligen finns det robotar som söker igenom webbsidor och datorer för att hitta oskyddade proxys, för att sedan lista dessa för allmĂ€nheten pĂ„ olika platser och forum. En felkonfigurerad proxy kallas i vissa kretsar för âopen proxyâ men det finns Ă€ven lagliga dito som hjĂ€lper anvĂ€ndare till högre anonymitet.
Proxy-missbruk förekommer idag överallt. Dock skiljer sig tekniken sÄ pass mycket Ät pÄ olika media att spÀrrhantering ibland kan bli betydande flaskhalsar för en server, om de inte hanteras rÀtt, i synnerhet pÄ webben dÀr trÀffar frÄn besökare görs mycket oftare Àn pÄ andra former av till exempel chattsidor. En jÀmförelse mellan IRC- och WWW-baserad chatt kan göras, dÀr skillnaderna Àr mer tydliga; nÀr anvÀndaren Àr uppkopplad pÄ en IRC-server, sÄ kopplas anslutningen inte ned igen förrÀn anvÀndaren sjÀlv begÀr det. PÄ WWW görs stÀndigt smÄ tillfÀlliga uppkopplingar, vilket gör kontrollerna lite mer avancerade dÄ en anvÀndare kan besöka flera stÀllen i ganska hög takt pÄ samma sida. Ett klassiskt exempel pÄ WWW-cha Àr den som förekommer pÄ Aftonbladet.
Givetvis sker inte kontrollerna automatiskt eftersom man i förvÀg inte vet vilken ipadress som Àr en proxy. Vilka adresser som Àr klassade som proxys finns tillgÀngliga i olika databaser pÄ internet. Den smidigaste lagringsmetoden kallas för DNSBL, mycket för att denna gör det möjligt för vem som helst att göra en kontroll av en ipadress.
En DNS-baserad svartlista (DNSBL, Real-time Blackhole List eller RBL), Àr en lista med IP adresser som publiceras i ett format som enkelt kan nÄs med hjÀlp av olika applikationer som anvÀnds pÄ internet. Som namnet sÀger, sÄ Àr det en teknologi som baseras pÄ DNS (Domain Name System) och anvÀnds flitigt för att publicera listor pÄ adresser som bedömts som spammande. MÄnga mailagenter (mailserver-programvara) kan stÀllas in för att blockera eller markera meddelanden som har skickats frÄn en site som finns pÄ en sÄdan hÀr typ av lista.
Att bygga spÀrrhanterare
Vem som helst kan skicka förfrÄgningar till en DNSBL tack vare DNS-teknologin. Vid en kontroll vÀnds oktetterna (Exempel: 127.0.0.1 blir 1.0.0.127) och ett resultat rÀknas fram - om det finns ett resultat sÄ finns det en proxy bakom ipadressen, annars inte. Detta Àr det mest grundlÀggande i hela kontrollen. Dock Àr en kontroll, dÀr endast ja eller nej görs, inget att rekommendera dÄ en DNS kan tala om mycket mer vid ett eventuellt svar.
För att genomföra en kontroll behövs Ă€ven en tillgĂ€nglig DNSBL och i detta fall anvĂ€nder vi opm.tornevall.org. Till exempel, för att kontrollera om 192.168.1.20 Ă€r listad pĂ„ opm.tornevall.org, gör vi ett DNS-uppslag pĂ„ 20.1.168.192.opm.tornevall.org, dvs med omvĂ€nda oktetter. Varje post i DNSBL har en âA recordâ. Om posten anvĂ€nds för att kontrollera epostspam brukar Ă€ven en âTEXT recordâ existera. PĂ„ opm.tornevall.org har denna A record en IP-adress som börjar pĂ„ 127.0.0.x dĂ€r x Ă€r ett bitvĂ€rde som motsvarar vilken typ av proxy som rapporterats. VĂ€rdena pĂ„ dessa bitar varierar sjĂ€lvklart beroende pĂ„ vilken DNS som fĂ„tt frĂ„gan.
En grundlÀggande ipkontroll i PHP skulle kunna programmeras pÄ detta vis:
I Perl hade samma kod sett ut sÄ hÀr:
PÄ denna rad görs hela kontrollen pÄ en gÄng och vÀrdet returneras via $opmlookup i ett redan uppdelat format. För att dÀrefter grundkontrollera om detta Àr en registrerad proxy rÀcker alltsÄ (vilket ser ut pÄ samma sÀtt i Perl):
I det hÀr fallet begÀr vi att koden skall avbrytas omedelbart om det returnerade vÀrdet Àr 127. Men vi Àr inte nöjda hÀr. opm.tornevall.org hÄller nÀmligen ordning pÄ vilken typ av proxy det Àr som rapporterats och om den fortfarande fungerar.
Det kan Àven vara sÄ att databasen skiljer pÄ om det Àr en proxy som Àr vanligt anvÀnd vid spam eller om den kan anvÀndas till webben. Eftersom olika proxys tillÄter olika mycket och arbetar pÄ olika sÀtt kan man sortera in dem i kategorier sÄsom HTTP, Socks osv. Strukturen kan göras hur lÄng som helst och det Àr hÀr kontrollen av bitvÀrden kommer in.
Vid kontroll av ovanstĂ„ende ipadress returnerades 127.0.0.35 frĂ„n vĂ„r DNS. Eftersom första delen innehĂ„ller â127â sĂ„ vet vi att detta Ă€r en proxy som skall djuptestas. Sista vĂ€rdet, i det hĂ€r fallet â35â, talar om för oss vad det Ă€r för typ av proxy vi Ă€r pĂ„ vĂ€g att sĂ€tta stopp för. För att ta reda pĂ„ exakt vad sĂ„ anvĂ€nder vi oss av bitmasking.
Bitmasking
För en snabb introduktion till bitmasking kan man förklara principen pÄ följande sÀtt - I en enorm skÄl har jag en massa olika saker. Varje sak motsvarar ett vÀrde:
Ăpple = 1
PĂ€ron = 2
Citron = 4
Apelsin = 8
Choklad = 16
Russin = 32
Fotboll = 64
Pizza = 128
Tillsammans utgör sakerna 8 bitar. Om jag plockar ett Àpple (1), ett pÀron (2) och ett russin (32) ur skÄlen sÄ fÄr jag fram vÀrdet 35. Tar jag en fotboll (64) och ett russin (32) fÄr jag vÀrdet 96. Om Pelle hÄller i vÀrdet 176 sÄ vet jag att han egentligen hÄller i en pizza (128), ett russin (32) och en bit choklad (16). Oavsett vilket vÀrde Pelle ger mig, sÄ kan jag med bitmaskingen tala om exakt vilka saker han bÀr pÄ.
I vÄrt fall med opm.tornevall.org betyder bitarna följande:
1 = Proxyn Àr kontrollerad
2 = Proxyn fungerar
4 = Proxyn matchar mot en Àldre databas driven av blitzed.org
8 = Proxyn har testats men tog för lÄng tid pÄ sig att svara
16 = Proxyn har testats men fick ingen kontakt
32 = Proxyn har testats men returnerade en annan ipadress
64 = Proxyn Àr ingen riktig proxy utan har rapporterats som missbrukande
128 = Proxyn anvÀnder en annan teknik, exempelvis som anonym webbtjÀnst
VÀrdet 35 som returneras betyder dÀrmed att vi har hittat en fungerande, kontrollerad proxy med hög anonymitet. För att enklare kunna göra berÀkningarna av bitarna har vi gjort fÀrdiga funktioner som returnerar ett antal vÀrden för varje mask vi begÀr. Vi arbetar bara med 8 bitar eftersom en DNS högsta vÀrde endast kan returnera vÀrden upp till 255.
HÀr kan vi vÀlja om vi vill spÀrra denna proxy eller om vi vill lÄta slÀppa den genom ytterligare kontroll av de olika vÀrdena. Dock bör man, som tidigare sagts, tÀnka pÄ att varje RBL har sina egna bitvÀrden - de som vi anvÀnder i exemplen fungerar troligtvis inte pÄ samma sÀtt om du vÀljer en annan RBL.
Bitmaskingen i kÀllkodsformat kan se ut sÄ hÀr:
PHP:
Perl:
Med hjÀlp av denna kod kan vi ta oss mycket lÀngre och sÄlla ut de svar som erhÄlls och verkligen fÄ fram de adresser som bör betraktas som hot. Somliga adresser uppdateras kontinuerligt och blir fort inaktiva och detta Àr Àven information som uppdateras pÄ aktiva RBL-siter. Inaktiva ipadresser som fortfarande ligger kvar i register kan med hjÀlp av denna metod dÀrför, vid behov, helt undantas frÄn blockering. NÄgot exempel pÄ detta finns dock inte hÀr dÄ processen Àr ganska varierande frÄn site till site.
Vidareutveckling
Du som bestÀmt dig för att prova exemplen i detta dokument pÄ din webbsida bör ta i beaktning att anvÀndningen i lÀngden inte Àr hÄllbar, i synnerhet inte om sidan blir större och vÀxer. Att göra stÀndiga namnuppslag pÄ detta sÀtt krÀver pÄ sikt en del kapacitet bÄde i din Ànde och i den DNS du nyttjar, eftersom du i princip kommer att spamma tjÀnsten med förfrÄgningar nÀr den vÀl Àr aktiv.
Programmeringen tar givetvis inte heller slut hÀr - bÀsta sÀttet att t.ex. undvika DNS-spam Àr att bygga en cache, som tillfÀlligt mellanlagrar uppslagen av ipadresser. PÄ sÄ vis behöver inte skriptet stÀlla varje frÄga om och om igen pÄ Internet, utan hÀmtar i stÀllet tidigare svar frÄn exempelvis en databas lokalt. Det kan rÀcka med en cache som bevarar namnuppslagen i 30-60 minuter.
KÀllkod att anpassa pÄ olika webbplatser Àr pÄ vÀg. Dock finns det ingenting fÀrdigt i skrivande stund (april 2007). Att anpassa ett sÄdant hÀr skript kan vara olika besvÀrligt beroende pÄ vilket system man Àmnar tillÀmpa det pÄ. Alla webbsidor ser ut pÄ olika sÀtt och det bör dÄ programmeras pÄ ett sÀtt sÄ att man nÀstan helt slipper att förÀndra befintlig kÀllkod. Detta för att underlÀtta framtida uppdateringar för webbsidans innehÄll samt den kÀllkod man anvÀnder för att blockera proxys pÄ.
Titel: Hantering av Web-OPM
Version: 1.0.0
Dokumentid: OPM-01
Författare:TT/TMM
Revisionsdatum: 2007-04-22
Författningsdatum: 2007-04-11
Sidor: 4
GrundlÀggande hantering av WEB-OPM
Denna dokumentation Àr gjord som en grundlÀggande upplysning kring proxyhantering och Àr ej gjord för skarp tillÀmpning pÄ webbsidor dÄ koden Àr extremt inkomplett. Beslutar du dig ÀndÄ för att anvÀnda koden pÄ nÄgot sÀtt, för eget bruk, görs detta pÄ eget ansvar och författaren av denna text tar sÄledes ej ansvar för nÄgra problem som pÄ grund av detta kan uppstÄ! Ej heller finnes krav pÄ författaren att ge support och stöd under nÄgra omstÀndigheter, om sÄ önskas.
Bakgrund
I takt med utvecklingen och mÀnniskors erfarenhet pÄ Internet blir metoderna allt mer sofistikerade i jakten pÄ att nÄ fram dit man vill. För att stÀrka sin egen anonymitet ytterligare, sÄ anvÀnds ibland sÄ kallade proxys. Det kan Àven röra sig om exempelvis spam, datorintrÄng eller andra metoder som krÀver anonymitet eller hög personintegritetsskydd.
Det engelska ordet "proxy" översÀtts i det hÀr sammanhanget till "ombud". En proxyserver kan alltsÄ anvÀndas som ett ombud pÄ nÀtet. En proxy anvÀnds ofta i samband med sÀkerhet, som en modul i en brandvÀgg. Webbproxyn Àr en proxy för http-protokollet, det som anvÀnds för webbsidor bÄde internt och externt. I samband med proxy anvÀnds ofta en cache, ett minne dÀr man lagrar sidor för att snabba upp Ätkomsten för anvÀndarna.
[kÀlla]
I princip anvÀnds en proxy normalt pÄ följande vis: om man som internetkund har en brandvÀgg kan man förenkla sitt surfande genom att anvÀnda en proxy, eftersom den kommer skydda den egna datorn mot intrÄng. En proxy sparar ocksÄ, som nÀmns ovan, ned allt surfmaterial pÄ hÄrddisk vilket innebÀr att nÀsta gÄng man surfar till en webbsida som datum-mÀssigt Àr oförÀndrad, sÄ Àr det proxyn som ger webblÀsaren informationen. Vissa internetleverantörer har gjort pÄ detta vis, eftersom man i viss mÄn kan fÄ ner antalet trÀffar mot internet och dÀrmed spara bandbredd.
Alla internetkunder/företag stĂ€ller dock inte alltid in sina proxys korrekt. Detta orsakar stora sĂ€kerhetsbrister pĂ„ deras datorer och medför att andra obehöriga internetanvĂ€ndare kan missbruka deras tjĂ€nster. Dagligen finns det robotar som söker igenom webbsidor och datorer för att hitta oskyddade proxys, för att sedan lista dessa för allmĂ€nheten pĂ„ olika platser och forum. En felkonfigurerad proxy kallas i vissa kretsar för âopen proxyâ men det finns Ă€ven lagliga dito som hjĂ€lper anvĂ€ndare till högre anonymitet.
[Reviderad kopia av kÀlla]
Teknisk spÀrrhantering
Proxy-missbruk förekommer idag överallt. Dock skiljer sig tekniken sÄ pass mycket Ät pÄ olika media att spÀrrhantering ibland kan bli betydande flaskhalsar för en server, om de inte hanteras rÀtt, i synnerhet pÄ webben dÀr trÀffar frÄn besökare görs mycket oftare Àn pÄ andra former av till exempel chattsidor. En jÀmförelse mellan IRC- och WWW-baserad chatt kan göras, dÀr skillnaderna Àr mer tydliga; nÀr anvÀndaren Àr uppkopplad pÄ en IRC-server, sÄ kopplas anslutningen inte ned igen förrÀn anvÀndaren sjÀlv begÀr det. PÄ WWW görs stÀndigt smÄ tillfÀlliga uppkopplingar, vilket gör kontrollerna lite mer avancerade dÄ en anvÀndare kan besöka flera stÀllen i ganska hög takt pÄ samma sida. Ett klassiskt exempel pÄ WWW-cha Àr den som förekommer pÄ Aftonbladet.
Givetvis sker inte kontrollerna automatiskt eftersom man i förvÀg inte vet vilken ipadress som Àr en proxy. Vilka adresser som Àr klassade som proxys finns tillgÀngliga i olika databaser pÄ internet. Den smidigaste lagringsmetoden kallas för DNSBL, mycket för att denna gör det möjligt för vem som helst att göra en kontroll av en ipadress.
En DNS-baserad svartlista (DNSBL, Real-time Blackhole List eller RBL), Àr en lista med IP adresser som publiceras i ett format som enkelt kan nÄs med hjÀlp av olika applikationer som anvÀnds pÄ internet. Som namnet sÀger, sÄ Àr det en teknologi som baseras pÄ DNS (Domain Name System) och anvÀnds flitigt för att publicera listor pÄ adresser som bedömts som spammande. MÄnga mailagenter (mailserver-programvara) kan stÀllas in för att blockera eller markera meddelanden som har skickats frÄn en site som finns pÄ en sÄdan hÀr typ av lista.
[KĂ€lla]
Att bygga spÀrrhanterare
Vem som helst kan skicka förfrÄgningar till en DNSBL tack vare DNS-teknologin. Vid en kontroll vÀnds oktetterna (Exempel: 127.0.0.1 blir 1.0.0.127) och ett resultat rÀknas fram - om det finns ett resultat sÄ finns det en proxy bakom ipadressen, annars inte. Detta Àr det mest grundlÀggande i hela kontrollen. Dock Àr en kontroll, dÀr endast ja eller nej görs, inget att rekommendera dÄ en DNS kan tala om mycket mer vid ett eventuellt svar.
För att genomföra en kontroll behövs Ă€ven en tillgĂ€nglig DNSBL och i detta fall anvĂ€nder vi opm.tornevall.org. Till exempel, för att kontrollera om 192.168.1.20 Ă€r listad pĂ„ opm.tornevall.org, gör vi ett DNS-uppslag pĂ„ 20.1.168.192.opm.tornevall.org, dvs med omvĂ€nda oktetter. Varje post i DNSBL har en âA recordâ. Om posten anvĂ€nds för att kontrollera epostspam brukar Ă€ven en âTEXT recordâ existera. PĂ„ opm.tornevall.org har denna A record en IP-adress som börjar pĂ„ 127.0.0.x dĂ€r x Ă€r ett bitvĂ€rde som motsvarar vilken typ av proxy som rapporterats. VĂ€rdena pĂ„ dessa bitar varierar sjĂ€lvklart beroende pĂ„ vilken DNS som fĂ„tt frĂ„gan.
En grundlÀggande ipkontroll i PHP skulle kunna programmeras pÄ detta vis:
PHP Code:
$opmlookup = explode('.', gethostbyname(implode('.', array_reverse(explode('.', $_SERVER[REMOTE_ADDR]))) . '.opm.tornevall.org'));
I Perl hade samma kod sett ut sÄ hÀr:
Code:
@opmlookup = unpack('C4', gethostbyname(join('.', (reverse(split /\./, $ENV{'REMOTE_ADDR'}))) . '.opm.tornevall.org'));
PÄ denna rad görs hela kontrollen pÄ en gÄng och vÀrdet returneras via $opmlookup i ett redan uppdelat format. För att dÀrefter grundkontrollera om detta Àr en registrerad proxy rÀcker alltsÄ (vilket ser ut pÄ samma sÀtt i Perl):
PHP Code:
if ($opmlookup[0] == '127') {exit;}
I det hÀr fallet begÀr vi att koden skall avbrytas omedelbart om det returnerade vÀrdet Àr 127. Men vi Àr inte nöjda hÀr. opm.tornevall.org hÄller nÀmligen ordning pÄ vilken typ av proxy det Àr som rapporterats och om den fortfarande fungerar.
Det kan Àven vara sÄ att databasen skiljer pÄ om det Àr en proxy som Àr vanligt anvÀnd vid spam eller om den kan anvÀndas till webben. Eftersom olika proxys tillÄter olika mycket och arbetar pÄ olika sÀtt kan man sortera in dem i kategorier sÄsom HTTP, Socks osv. Strukturen kan göras hur lÄng som helst och det Àr hÀr kontrollen av bitvÀrden kommer in.
Vid kontroll av ovanstĂ„ende ipadress returnerades 127.0.0.35 frĂ„n vĂ„r DNS. Eftersom första delen innehĂ„ller â127â sĂ„ vet vi att detta Ă€r en proxy som skall djuptestas. Sista vĂ€rdet, i det hĂ€r fallet â35â, talar om för oss vad det Ă€r för typ av proxy vi Ă€r pĂ„ vĂ€g att sĂ€tta stopp för. För att ta reda pĂ„ exakt vad sĂ„ anvĂ€nder vi oss av bitmasking.
Bitmasking
För en snabb introduktion till bitmasking kan man förklara principen pÄ följande sÀtt - I en enorm skÄl har jag en massa olika saker. Varje sak motsvarar ett vÀrde:
Ăpple = 1
PĂ€ron = 2
Citron = 4
Apelsin = 8
Choklad = 16
Russin = 32
Fotboll = 64
Pizza = 128
Tillsammans utgör sakerna 8 bitar. Om jag plockar ett Àpple (1), ett pÀron (2) och ett russin (32) ur skÄlen sÄ fÄr jag fram vÀrdet 35. Tar jag en fotboll (64) och ett russin (32) fÄr jag vÀrdet 96. Om Pelle hÄller i vÀrdet 176 sÄ vet jag att han egentligen hÄller i en pizza (128), ett russin (32) och en bit choklad (16). Oavsett vilket vÀrde Pelle ger mig, sÄ kan jag med bitmaskingen tala om exakt vilka saker han bÀr pÄ.
I vÄrt fall med opm.tornevall.org betyder bitarna följande:
1 = Proxyn Àr kontrollerad
2 = Proxyn fungerar
4 = Proxyn matchar mot en Àldre databas driven av blitzed.org
8 = Proxyn har testats men tog för lÄng tid pÄ sig att svara
16 = Proxyn har testats men fick ingen kontakt
32 = Proxyn har testats men returnerade en annan ipadress
64 = Proxyn Àr ingen riktig proxy utan har rapporterats som missbrukande
128 = Proxyn anvÀnder en annan teknik, exempelvis som anonym webbtjÀnst
VÀrdet 35 som returneras betyder dÀrmed att vi har hittat en fungerande, kontrollerad proxy med hög anonymitet. För att enklare kunna göra berÀkningarna av bitarna har vi gjort fÀrdiga funktioner som returnerar ett antal vÀrden för varje mask vi begÀr. Vi arbetar bara med 8 bitar eftersom en DNS högsta vÀrde endast kan returnera vÀrden upp till 255.
HÀr kan vi vÀlja om vi vill spÀrra denna proxy eller om vi vill lÄta slÀppa den genom ytterligare kontroll av de olika vÀrdena. Dock bör man, som tidigare sagts, tÀnka pÄ att varje RBL har sina egna bitvÀrden - de som vi anvÀnder i exemplen fungerar troligtvis inte pÄ samma sÀtt om du vÀljer en annan RBL.
Bitmaskingen i kÀllkodsformat kan se ut sÄ hÀr:
PHP:
PHP Code:
function bitmask ($bit = '')
{
$loadbits = 8; // Antal bitar att rÀkna med
for ($i = 0 ; $i < $loadbits ; ++$i) {$arr[] = pow(2,$i); } // Automatisera
bitvÀrden
for ($i = 0 ; $i < count($arr) ; ++$i) {$mask[$i] = ($bit & $arr[$i])
? '1' : '0';} // SÀtt 1 till de bitvÀrden som Àr pÄslagna
return $mask;
}
Perl:
Code:
sub bitmask;
sub bitmask
{
my ($bit) = @_;
my $loadbits = 8;
for ($i = 0 ; $i < $loadbits ; ++$i) {$arr{$i} = int(2 ** $i);}
foreach $a (sort keys %arr) {$mask->{$a} = $bit & $arr{$a} ? '1' : '0';}
return($mask);
}
Med hjÀlp av denna kod kan vi ta oss mycket lÀngre och sÄlla ut de svar som erhÄlls och verkligen fÄ fram de adresser som bör betraktas som hot. Somliga adresser uppdateras kontinuerligt och blir fort inaktiva och detta Àr Àven information som uppdateras pÄ aktiva RBL-siter. Inaktiva ipadresser som fortfarande ligger kvar i register kan med hjÀlp av denna metod dÀrför, vid behov, helt undantas frÄn blockering. NÄgot exempel pÄ detta finns dock inte hÀr dÄ processen Àr ganska varierande frÄn site till site.
Vidareutveckling
Du som bestÀmt dig för att prova exemplen i detta dokument pÄ din webbsida bör ta i beaktning att anvÀndningen i lÀngden inte Àr hÄllbar, i synnerhet inte om sidan blir större och vÀxer. Att göra stÀndiga namnuppslag pÄ detta sÀtt krÀver pÄ sikt en del kapacitet bÄde i din Ànde och i den DNS du nyttjar, eftersom du i princip kommer att spamma tjÀnsten med förfrÄgningar nÀr den vÀl Àr aktiv.
Programmeringen tar givetvis inte heller slut hÀr - bÀsta sÀttet att t.ex. undvika DNS-spam Àr att bygga en cache, som tillfÀlligt mellanlagrar uppslagen av ipadresser. PÄ sÄ vis behöver inte skriptet stÀlla varje frÄga om och om igen pÄ Internet, utan hÀmtar i stÀllet tidigare svar frÄn exempelvis en databas lokalt. Det kan rÀcka med en cache som bevarar namnuppslagen i 30-60 minuter.
KÀllkod att anpassa pÄ olika webbplatser Àr pÄ vÀg. Dock finns det ingenting fÀrdigt i skrivande stund (april 2007). Att anpassa ett sÄdant hÀr skript kan vara olika besvÀrligt beroende pÄ vilket system man Àmnar tillÀmpa det pÄ. Alla webbsidor ser ut pÄ olika sÀtt och det bör dÄ programmeras pÄ ett sÀtt sÄ att man nÀstan helt slipper att förÀndra befintlig kÀllkod. Detta för att underlÀtta framtida uppdateringar för webbsidans innehÄll samt den kÀllkod man anvÀnder för att blockera proxys pÄ.