Captcha ist derzeit eine der gängigsten Methoden zum Schutz freier Formate. Ursprünglich wurde es nicht zum Schutz der Datensicherheit geschaffen, sondern zum Schutz vor Spam und um zu erkennen, dass es sich um einen Menschen handelt.
Da es jedoch maschinell erzeugt wird, ist es nicht immer perfekt, aber die Erfolgsquote eines Captcha-Tests liegt bei etwa 99 %, und nur 1 % der Bilder kann von einem gut gemachten Spam-Roboter entschlüsselt werden.
Es gibt noch mehr Möglichkeiten, ich verwende zum Beispiel diese Lösung:
Wenn der Captcha-Test gelöst werden kann, ist der Benutzer wahrscheinlich ein Mensch. Es ist jedoch gut, an Benutzer zu denken, die die Aufgabe nicht lösen können, insbesondere an blinde Benutzer. Es ist eine gute Lösung, um mehrere mögliche Tests zu kombinieren (insbesondere Voice Prefetching). Allerdings ist die maschinelle Spracherkennung derzeit wesentlich effizienter als das Ablesen von Bildern. Daher ist diese Lösung nicht immer ideal.
Oft reicht es aus, ein leeres Bild mit bestimmten Abmessungen zu erzeugen und einige Zeichen ohne weitere Bearbeitung lesbar einzugeben. Ernsthaft! Die meisten Spam-Bots sind dumm und können generische Formulare mit dieser Art von Schutz nicht angreifen, auch wenn es sich um perfekt lesbaren Text handelt, den eine bessere OCR perfekt transkribieren kann.
Das resultierende Bild kann wie folgt aussehen:
<img src="captcha.php" alt="ukázková captcha">
Versuchen Sie, die Seite ein paar Mal zu aktualisieren, und Sie werden sehen, dass sich der Code jedes Mal zufällig ändert. Zu Demonstrationszwecken wird sie nur generiert, ohne zu speichern, so dass sie sofort nach dem Laden wieder entfernt wird.
Ich habe den Quellcode mit Hilfe der PHPGD-Bibliothek gelöst, die auf praktisch jeder PHP-Installation und jedem Hosting verfügbar ist:
Header("Inhaltstyp: image/png");$obr = ImageCreate(100, 35);$pozadi = ImageColorAllocate ($obr, 219, 28, 49); //Hintergrundfarbe definieren$bila = ImageColorAllocate ($obr, 255, 255, 255); //Weiße Farbdefinition für Text$styl = array ($pozadi);ImageSetStyle ($obr, $styl);$nahodne_cislo = rand(11111,99999); //Ziehen einer Zufallszahl mit 5 Zeichen Längeimagestring($obr, 5, 25, 10, $nahodne_cislo, $bila); //Funktion zum Zeichnen von Text (in diesem Fall eine Zahl)ImagePNG($obr); //Erzeugung des Bildes im Speicher und RenderingImageDestroy($obr); //Löschen des Bildes aus dem Speicher (es wird nicht mehr benötigt, da es einmal erstellt wurde)
Das Rendering des Bildes ist dann nur noch eine Frage von HTML:
<img src="captcha.php">
Beachten Sie, dass dieses Skript ohne weitere Modifikationen nicht funktionsfähig ist. Es dient nur zur Demonstration, um ein einfaches Bild zu erzeugen.
Captcha-Tests sind recht zuverlässig, aber lästig und zeitaufwändig. Manchmal sind sie nicht lesbar. Dann ist es gut, wenn man dem Benutzer die Möglichkeit gibt, mit Hilfe von Javascript ein anderes Bild zu laden, damit nicht die ganze Seite neu geladen und alles neu ausgefüllt werden muss.
Erinnern Sie sich: Was für einen Menschen eine triviale Aufgabe ist, kann für eine Maschine niemals eine realisierbare Lösung sein. Deshalb kann sogar dieses primitive Captcha mit perfekt lesbarem Text vor mehr als der Hälfte des Spams schützen.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | de