Ik heb een captcha gemaakt voor het registreren op mijn site.
De image wordt al geladen enzo, dat werkt. Nu wil ik dat bijv. voor slechtziende, je op een link kan klikken waardoor er een pop-up verschijnt met de plaintext code.
Ik dacht dit gewoon te doen door in de popup echo $_SESSION['code']; te zetten, maar dat werkt niet.
Ik wil het ook niet meegeven als showimg.php?code=... want dan kan je zo uit de bron de plain-text halen.
Ik kan wel een codering maken (die om te draaien is) en die in de url meegeven, maar ik doe het liever met de sessies, dat kunnen ze niet zo gemakkelijk onderscheppen.
Weet iemand hoe ik dit kan doen?
DOH!!
Ik alles nagelopen, gecontroleerd, blijkt dat ik session_start(); in showimg.php ben vergeten! ><
[edit]
Ik heb nog wel een vraag, is het mogelijk voor een bot om die url te openen en dan daaruit de code te lezen?
Ik kan dit ook alweer deels tegengaan door met een duidelijk lettertype weer een plaatje te maken, maar er zijn bots die die plaatjes kunnen lezen. Is het mogelijk dat zon bot die link opent en daar kijkt?
Hoe kunnen we hierons nog tegen bewapenen?
Ik ben al verschillende dingen aan het uitzoeken hoe je bijvoorbeeld een verwarrende achtergrond kan maken. Zodat het voor de gebruiker nog wel duidelijk is, maar dat de bot de letters moeilijker kan herkennen (kleuren redelijk dicht bij elkaar, drukke achtergrond).
Er komt sowieso nog een IP-check op 't gastenboek, dat je maar elke 30sec. met hetzelfde IP een bericht kan verzenden.
Maar is het mogelijk dat een bot die popup opent en vanuit daar plaintext code kopieert? Eigenlijk of het überhaupt mogelijk is zo'n popup te openen voor die bot, want als dat niet kan, kan ik altijd nog kiezen voor een img in de popup voor extra beveiliging.
Ik ga mijn captcha nog wat verbeteren door een 500stippen van 1px bij 1px te zetten (op een img van 120x40) en een aantal strepen erdoor. Dan moet 't moeilijker te lezen zijn voor bots. Ook worden de stippen en lijnen in andere kleuren en de letters ook nog wat meer kleuren. Als dit gelukt is schrijf ik misschien wel een tut over het uitbreiden van je captcha.
Ik heb een kleine tutorial geschreven over het maken van een captcha, hier. Als ik het goed begrijp, wil je na het klikken op een link er voor zorgen dat er in gewone (plain) tekst de code verschijn. Bots zijn vrij gemakkelijk te programeren, en mocht er iemand zijn die echt een bot op jouw site wil zetten, is dat het makkelijkste en het zwakste punt in jouw systeem. Ofterwijl, dat gaat hij zeker weten gebruiken, dus dat heeft vrij weinig nut. Als je beseft dat bots een captcha soms op een willekeurige plek kan vinden, en dan zelfs soms nog uitlezen.... dan is dat een koud kunstje.
Succes er mee, maar een link met een simpel selecteerbaar stukje code maakt het wel iets te gemakkelijk =)
Mogelijkheden om een captcha het moeilijk te maken:
- Achtergrond afbeeldingen met veel kleuren
- Verschillende rasters en lijnen (Niet synchroon)
- Verschillende fonts
- Elke letter/cyfer aparte draaihoek
- Elke letter/cyfer eigen locatie (x-y)
- Verschillende captcha image grootte
- Neppe letters en cyfers in licht transparant
- Veel meer, google
Echter is er een probleem.. Ze moeten wel leesbaar zijn voor de bezoeker, zij geven het snel na 2 a 3 keer op als ze het niet kunnen lezen.
Mijn achtergrond ga ik nog even bijwerken, met eel vlakken en lijnen enzo.
Ik ga denk ik ook maar even voor elke letter een aparte Y-coord pakken. Neppe letters is ook een goed idee, maar hoe maakt je een letter bijna transparant. Dat kan alleen door de achtergrondkleur op die plek te weten en 'm daar heel dicht tegenaan te zetten.
Ik heb nu in de popup, dat er wel een img wordt gemaakt, waar het heel duidelijk instaat.
Ik heb nu in de popup, dat er wel een img wordt gemaakt, waar het heel duidelijk instaat.
Zonde werk als je dan de eerste captcha goed gaat proberen uit te werken, want je doet het dus voor niets. Als je een popup maakt met dus een makkelijk leesbaar plaatje, dan neem ik aan dat dit zo makkelijk is dat de bot daar dus ook geen enkel probleem mee heeft.
(duidelijke fonts, geen draaihoek, etc etc = 100% leesbaar voor bot..)
Hoe zou ik 't dan moeten doen?
Die popup is wel zo vriendelijk voor de bezoeker, als die bijvoorbeeld slecht kan zien en daardoor de image amper kan lezen.
Wat je dan vaak ziet is een stem die de letters één voor één opleest, maar dat is waarschijnlijk een beetje vergezocht voor dit.
Als zo'n bot het echt op je site heeft gemund, is waarschijnlijk de enige oplossing nog je site tijdelijk platgooien, of alle IP's die je kent (dus van leden die niet door de bot zijn aangemaakt) toe te staan. Enige probleem van die laatste: het gastenboek is dan ook niet meer toegankelijk voor niet-leden (in mijn geval).
Tjah, hoe dan? Ik heb geen echt goed idee daarvoor, maar gebruik dan direct een duidelijke captcha? Of ga er van uit dat de meesten goed kunnen lezen. Het aantal dat een captcha echt niet kan lezen is vrij minimaal lijkt mij, althans als je het niet te moeilijkt maakt.
Echter wat misschien wel handig is om te weten. Losse letters zijn vaak lastiger te lezen voor de mens dan woorden. Voor een bot maakt het niet uit of het losse letters zijn of woorden, maar voor de mens wel. Maak dus misschien een flinke lijst met woorden die in de captcha worden verwerkt i.p.v random letters en cyfers.
Verder, ik weet niet wat voor een site je aan het maken bent... Maar of er echt veel interesse voor is om een captcha op te gooien betwijfel ik =) Dan moet je vooral kijken naar publiek gebruikte sites (phpBB, vBullitin, PostNuke, dingen zoals dat) en site met veel, héél veel gebruikers met forums e.d.
Maar ja, dat is natuurlijk je eigen beslissing qua beveiliging.. Als je er veel voor over hebt kan je misschien een keer ergens een poll houden over de mogelijkheden? Of gewoon wel met je dubbele captcha door gaan als dat jouw een goed idee lijkt. Maar nogmaals, een versimpelde captcha op je site maken, doet de goeie captcha teniet.
Ik zag net ook iets moois, dat is denk ik iets wat ik heel goed kan gebruiken.
Daar stond bij dat alleen de tekens 0-9 en A-F werden gebruikt. Op die manier konden ze alle letters van G-Z gebruiken op de achtergrond om bots te verwarren. Ik ga daar eens mee oefenen welke kleuren ik voor die achtergrond kan gebruiken (daar was het een hele lichte achtergrond, met heel lichtblauwe, -roze en -gele letters op de achtergrond).
Ja dat kan, maar je hoeft niet persee de ongebruikte letters te gebruiken. Je kan alles gebruiken, zolang er maar duidelijke onderscheid is tussen achtergrond en orgineel. Als je een duidelijke lijn hebt tussen de scheiding a-f | g-z gaat men ook weer kijken naar de mogelijkheden, vooral omdat je dan maar 6 karakters gebruikt voor het orgineel, wat weer makkelijker maakt voor de PWNTCHA's.