- Index
Spamberichten die door een toegangscontrole op één van mijn sites tegengehouden zijn geweest kan u hier aantreffen. Het toegepaste systeem moest zo onopvallend mogelijk zijn (om mensen niet te ontmoedigen een bijdrage te schrijven): van registratie, username, login en passwoord mocht er dus geen sprake zijn. Zoals u ziet loont het de moeite een toegangscontrole in te stellen!
JPEG kwaliteit: 1 | JPEG kwaliteit: 3 | JPEG kwaliteit: 5 | JPEG kwaliteit: 7 | JPEG kwaliteit: 9 | JPEG kwaliteit: 11 |
---|
De realisatie is poepsimpel, en we gaan zelfs de beperkingen van jpeg gebruiken om het decoderen door robotten extra moeilijk maken.
JPEG kwaliteit: 1 | JPEG kwaliteit: 3 | JPEG kwaliteit: 5 | JPEG kwaliteit: 7 | JPEG kwaliteit: 9 | JPEG kwaliteit: 11 |
---|
Er zijn toegangscontrole-programma's die vervormde letters genereren. Dit kan veel eenvoudiger en met minder bandbreedte door gewoon het beeld sterk te comprimeren! Naargelang de compressie is iedere jpg in dit voorbeeld 1490 à 1745 bytes groot.
Ondertussen zijn er al een paar Captcha-algoritmen gekraakt: iets dat je zelf schrijft zal in ieder geval niet zo snel gekraakt worden! Een achtergrond met een gradient en/of valse tekens (die zelfs niet op letters moeten lijken) blijken bijzonder moeilijk te kraken. Gewoon de aanwezigheid van een captcha is meestal voldoende om je site te beveiligen tegen ongewenste bezoekers (robotten) die spam in het forum achterlaten. Het kraken van je algoritme loont niet de moeite, en het is dus niet nodig een nagenoeg onleesbare captcha op je site te plaatsen. Je doet de gebruikers geen gunst door een beeld te gebruiken dat bijna niet te lezen is.
Dit is de kode om een captcha aan te maken en door te sturen:
RANDOMIZE ran$ = FORMAT$(RND(1, 999999), "000000") a$ = "d:\jpgconv\jpgconv d:\images\pass.jpg f:\j.jpg 10 100 s " + $DQ + "+" + ran$ + "+" + $DQ + " " + $DQ + "COMIC"_ + $DQ + " 15 0,0,0 224,224,224 c c, 0,1,0" SHELL a$ OPEN "f:\pass.txt" FOR OUTPUT AS #2: PRINT #2, ran$: CLOSE ' We slaan de gegenereerde kode op in een bestand om die OPEN "f:\j.jpg" FOR BINARY AS #1: i = LOF(1): GET$#1, i, a$: CLOSE ' later te vergelijken met wat de bezoeker ingevuld heeft. OPEN ENVIRON$("CGI_STDOUT") FOR OUTPUT AS #3 ' Dan maken we ons outputbestand aan PRINT #3, "HTTP/1.0 200 OK ' We gebruiken NPH (non-parsed headers) PRINT #3, "Content-Type: image/jpeg ' om aan te geven dat het bestand een JPG is. print #3, "Cache-Control: no-cache ' On te vermijden dat de browser het bestand in zijn cache zou opnemen PRINT #3, "Content-Length:" i ' en de bezoeker dus een verlopen beeld zou tonen. PRINT #3, PRINT #3, a$ CLOSE |
Individuele landingspage bezoekers: