{"id":601,"date":"2020-04-28T16:58:36","date_gmt":"2020-04-28T14:58:36","guid":{"rendered":"https:\/\/wiki.ad-libitum.info\/?page_id=601"},"modified":"2020-04-28T17:28:40","modified_gmt":"2020-04-28T15:28:40","slug":"captchas","status":"publish","type":"page","link":"https:\/\/wiki.ad-libitum.info\/?page_id=601","title":{"rendered":"Captchas"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Captchas sind Bl\u00f6dsinn &#8211; Alternativen gegen Spam<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Captchas sind mehr oder oft weniger entzifferbare Zeichenfolgen, die zunehmend vor dem Versenden eines Formulars in einer Grafik erkannt und m\u00fchsam in ein Eingabefeld \u00fcbertragen werden m\u00fcssen. Das behindert vor allem Besucher mit Sehschw\u00e4chen und ist zudem zur Abwehr von Spam (unerw\u00fcnschten automatisierten Eintr\u00e4gen) auch v\u00f6llig unn\u00f6tig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ich habe nicht eruiert, wer auf diese Schnappsidee gekommen ist, aber das war eindeutig ein Fehlschuss. Spammer f\u00fchren einen st\u00e4ndigen Kampf und k\u00f6nnten auch noch so unkenntliche Captchas austricksen durch fortgeschrittene Texterkennung oder auch Menschen, denen zum Zugang einer (Porno-)Seite das Captcha eines damit vor Spam gesicherten fremden Formulars vorgesetzt wird. Bisher mussten Spammer noch gar nicht zu solchen Tricks greifen, da es noch gen\u00fcgend nicht durch Captchas gesicherte Formulare im Netz gibt. Mit der zunehmenden Verbreitung von Captchas allerdings ist damit zu rechnen, dass dieser Schutz zunehmend ausgehebelt wird \u2013 siehe z.B. <a href=\"http:\/\/www.1ngo.de\/web\/ExterneLinks.html#sam.zoy.org\/pwntcha\/\">PWNtcha<\/a> und <a href=\"http:\/\/www.1ngo.de\/web\/ExterneLinks.html#www.mperfect.net\/aiCaptcha\/\">aiCaptcha<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Captcha-Erfinder sind sich der M\u00f6glichkeiten moderner Texterkennung bewusst und behindern daher (noch v\u00f6llig unn\u00f6tig) schon jetzt die menschlichen Besucher mit kaum noch eindeutig erkennbaren Captchas &#8211; und sie haben dies sogar einkalkuliert, da sie gleich einen Link f\u00fcr ein weiteres Captcha anbieten in der Hoffnung, die versteckte Zeichenfolge k\u00f6nnte hieraus richtig geraten werden. Ich habe schon Seiten gesehen, bei denen ich selbst beim zehnten Captcha noch daneben lag. Und dabei leide ich &#8211; au\u00dfer beginnender Alterssichtigkeit, weshalb ich bei meinem 19&#8242;-Monitor nur eine Aufl\u00f6sung von 1024*768 verwende &#8211; nicht an einer Sehschw\u00e4che.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Blinde sind am schlimmsten von dem Captcha-Wahn betroffen. Ihnen wird der Zugang damit v\u00f6llig verwehrt, weshalb Captchas auf barrierefreien Seiten auch nicht eingesetzt werden d\u00fcrfen. Es sollte auch jedem klar sein, dass es <a href=\"http:\/\/www.1ngo.de\/web\/ExterneLinks.html#www.w3.org\/TR\/turingtest\/\">kein barrierefreies Captcha<\/a> geben kann. Wenn die Zeichenfolge zus\u00e4tzlich zum Captcha f\u00fcr Behinderte auf andere Weise &#8211; z.B. ganz simpel als <code>Alt<\/code>ernativtext &#8211; pr\u00e4sentiert w\u00fcrde, k\u00f6nnte man auf das Captcha zur Freude aller gleich ganz verzichten. Und selbst eine alternative Sprachausgabe w\u00e4re nicht barrierefrei, da nicht sichergestellt ist, dass die Sprache ausgegeben und auch verstanden wird &#8211; manche Sehbehinderte nutzen lediglich eine extreme Textvergr\u00f6\u00dferung und Blinde eine Braillezeile und vielen Bildschirmarbeitspl\u00e4tzen stehen auch gar keine Lautsprecher zur Verf\u00fcgung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Eine barrierefreie Alternative zu Captchas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Programme der Spammer, die das Internet nach Formularen absuchen und diese analysieren, erkennen recht gut, in welchen Feldern welche Eingaben erwartet werden und bef\u00fcllen diese sogar meist passend. Genau dies kann man gegen sie zur Spam-Abwehr einsetzen. In meinem <a href=\"http:\/\/ingo-webdesign.de\/1ngo\/Gaestebuch.php\">G\u00e4stebuch<\/a> habe ich erfolgreich Fallen f\u00fcr Spam-Bots eingebaut wie diese:<code>.nosee { display:none; }<br><br>&lt;p class=\"nosee\"&gt;<br>&nbsp;&nbsp;&lt;label for=\"email\"&gt;Ihre eMail wird nicht abgefragt, tragen Sie auch hier bitte NICHTS ein:&lt;\/label&gt;<br>&nbsp;&nbsp;&lt;input id=\"email\" name=\"email\" size=\"60\" value=\"\" \/&gt;<br>&lt;\/p&gt;<br><br>&lt;?php<br>&nbsp;&nbsp;if(isset($_POST['email']) &amp;&amp; $_POST['email']) {<br>&nbsp;&nbsp;&nbsp;&nbsp;# nicht eintragen, sondern Mitteilung \u00fcber Spamverdacht<br>&nbsp;&nbsp;}<br>?&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es hat sich gezeigt, dass 97% der Spam-Bots darauf <a href=\"http:\/\/ingo-webdesign.de\/1ngo\/Gaestebuch.php?spam\">hereinfallen<br><\/a>&nbsp;und hier sogar eine g\u00fcltige &#8211; wenn auch wohl frei erfundene &#8211; Adresse eintragen. Wichtig bei dieser Methode ist:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Das Eingabefeld darf nicht auf <code>hidden<\/code> gesetzt werden, sondern muss \u00fcber <a href=\"http:\/\/www.1ngo.de\/web\/captcha-spam.html#\">CSS<br><\/a>&nbsp;ausgeblendet werden.<\/li><li>Das Eingabefeld sollte im <code>name<\/code>-Attribut (z.B. &#8222;email&#8220;) sowie im <code>label<\/code> (z.B. &#8222;Ihre eMail&#8220;) \u201einteressant\u201c und vermeintlich leicht erkennbar bezeichnet werden, um auch das Interesse der Spam-Programme zu wecken.<\/li><li>Das Eingabefeld sollte im Quelltext von anderen Feldern umgeben sein, da zu weit abgesetzte Felder Misstrauen erwecken k\u00f6nnten.<\/li><li>F\u00fcr Besucher z.B. mit Textbrowsern, die kein CSS umsetzen, muss klar ersichtlich sein, dass hier keine Eingabe erfolgen darf.<\/li><li>Es sollte darauf hingewiesen werden, das Formular nicht \u00fcber eine ggf. vorhandene &#8222;Formfiller&#8220;-Funktion automatisch ausf\u00fcllen zu lassen \u2013 leider ein Tribut an die noch nicht auf dem (CSS-)Stand der ScreenReader stehenden Browser-Zus\u00e4tze. Vermeiden k\u00f6nnen Sie dies u.U. mit dem (nicht standardkonformen) Attribut <code>autocomplete=\"off\"<\/code>.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ganz wichtig aber: seien Sie <strong>kreativ<\/strong> und \u00fcbernehmen diesen Code nicht 1:1 &#8211; wenn Spam-Bots h\u00e4ufiger an einem bestimmten Code scheitern, k\u00f6nnten die Programmierer diesen sonst zuk\u00fcnftig ber\u00fccksichtigen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W\u00e4hlen Sie aber keine Phantasiebezeichnungen f\u00fcr die Eingabefallen, sondern g\u00e4ngige Begriffe &#8211; ganz besonders anziehend sind auch &#8222;homepage&#8220; mit 75% und &#8222;url&#8220;, da solche Felder i.d.R. automatisch verlinkt werden. Ihre echten Eingabefelder k\u00f6nnen Sie dagegen kryptisch benennen und hierdurch einige Spam-Bots dazu veranlassen, diese leer zu lassen. Wenn es sich dabei um <strong>Pflichtfelder<\/strong> handelt, ist das auch ein zus\u00e4tzlicher Schutz gegen Spam (noch effektiver \u00fcbrigens, wenn Sie solche Eingabefelder mit einem Text vorbelegen, der bei der Eingabe gel\u00f6scht wird bzw. werden muss).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Auch die Zeit arbeitet gegen Spam<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wie lange ben\u00f6tigt ein echter Besucher zum Schreiben seiner Nachricht? Bestimmt l\u00e4nger als 16 Sekunden und (selbst wenn er zwischendurch einschl\u00e4ft) nicht l\u00e4nger als 16 Stunden. Spam-Bots dagegen brauchen in 76% nur wenige Sekunden; weniger als 1% der Bots scannen das Formular nur noch einmalig, um es dann f\u00fcr alle folgenden Spams zu nutzen. Es ist recht selten, dass automatisierte Spam-Eintr\u00e4ge au\u00dferhalb dieser Zeitspanne nach Anforderung des Formulars erfolgen. Um dies zur Spam-Abwehr zu nutzen, m\u00fcssen Sie nicht extra eine Session starten &#8211; ein verdecktes Formularfeld reicht hierzu v\u00f6llig:<code>&lt;?php define ('Zeit', time()); \/\/ Startzeit des Scripts setzen<br><br># weiterer Code bis zur \u00dcberpr\u00fcfung:<br>if (!isset($_POST['date'])) { \/* Feld fehlt -&gt;Spam *\/ }<br>elseif (!is_numeric($_POST['date'])) { \/* Manipulierung -&gt;Spam *\/ }<br>elseif (intval($_POST['date']) &gt; Zeit-10) { \/* zu schnell -&gt;Spam *\/ }<br>elseif (intval($_POST['date']) &lt; Zeit-10*3600) { \/* altes Formular -&gt;Spam *\/ }<br>else { \/* kein Spam\u00bf -&gt; ggf. weitere Pr\u00fcfungen und Verarbeitung des Eintrages *\/ }<br><br># weiterer Code bis zum Formular:<br>echo '&lt;input name=\"date\" type=\"hidden\" value=\"', time(), '\" \/&gt;';<br>?&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allein der Zeitvergleich filtert \u00fcber 76% aller Spams aus. Und da Spam-Bots verdeckte Input-Felder normalerweise ungepr\u00fcft \u00fcbertragen, muss dieses Feld noch nicht einmal durch Benennung oder Verschl\u00fcsselung des Wertes unkenntlich gemacht werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Inhaltsfilter zur Erkennung von Spam<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zus\u00e4tzlich k\u00f6nnen und sollten die Inhalte analysiert werden. Auch wenn die Spam-Bots sehr effektiv programmiert sind &#8211; die Spammer sind meist bl\u00f6d und verschicken allzu leicht als Spam erkennbare Inhalte. Au\u00dferdem k\u00f6nnen Sie nur hier\u00fcber die seltenen manuellen Spam-Eintr\u00e4ge zu verhindern versuchen. Ich will hier nur einige Kriterien aufzeigen, anhand derer Spam relativ zuverl\u00e4ssig von echten Inhalten unterschieden werden kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Links sind meist der wichtigste Inhalt und eigentliche Grund zur Versendung von Spam. Wenn ein Text bereits mit einem Link begonnen wird, ist die Wahrscheinlichkeit sehr hoch, dass es sich um Spam handelt. Spam ist auch daran zu erkennen, dass gleichzeitig \u00fcber mehrere Methoden versucht wird, eine Verlinkung zu erreichen:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Einfache Angabe von: <code>http:\/\/example.org<\/code> oder <code>www.example.org<\/code><\/li><li>HTML-Auszeichnung: <code>&lt;a href=\"example.org\"&gt;<\/code><\/li><li>BB-Code: <code>[url]example.org[\/url]<\/code> oder<\/li><\/ul>\n\n\n<p>[url=example.org]<\/code><\/li>\n<\/ul>\n<p class=\"blocksatz\">Wortfilter k\u00f6nnen &#8211; aber bitte mit Umsicht &#8211; eingesetzt werden. Die einmalige Verwendung des Wortes \u00bb<code>Viagra<\/code>\u00ab<br \/>\nist mit Sicherheit noch kein Indiz f\u00fcr Spam. \u00dcbel ist insbesondere eine<br \/>\neinfache Suche nach Zeichenfolgen; so w\u00e4re es fatal, nach \u00bb<code>porn<\/code>\u00ab zu suchen und Ans<strong>porn<\/strong> dadurch als Spam zu betrachten.<\/p>\n<p class=\"blocksatz\">URLs k\u00f6nnen ebenfalls ein Kriterium f\u00fcr Spam sein, besonders i.V. mit Wortfiltern. So ist der Versuch, eine Adresse wie <code><strong>pharmacy.<\/strong>example.org<strong>\/tramodol<\/strong><\/code><br \/>\nzu verlinken, mit Sicherheit Spam. Und absolut in jede meiner<br \/>\nSpam-Fallen war dieser st\u00fcmperhafte (hier verk\u00fcrzt wiedergegebene)<br \/>\nVersuch getappt:<\/p>\n<p><code class=\"box\"><strong>&lt;a href=<\/strong>\"http:\/\/www.example<strong>.edu\/<\/strong>x\/y\/z.htm?<strong>viagra-online<\/strong>\"&gt;<strong>viagra online<\/strong>&lt;\/a&gt;<br \/>\n<strong>http:\/\/<\/strong>www.example<strong>.edu\/<\/strong>x\/y\/z.htm?<strong>viagra-online<\/strong><br \/>\n<strong>[url=<\/strong>http:\/\/www.example<strong>.edu\/<\/strong>x\/y\/z.htm?<strong>viagra-online<\/strong>]<strong>viagra online<\/strong>[\/url]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ich verwende in meinem G\u00e4stebuch sehr verschiedene Arten von Wortfiltern. Besonderes Augenmerk gilt wie schon erw\u00e4hnt dem Textanfang und auch dem Textende; \u00fcber 40% der Spams fallen hierbei auf. Eine unsinnige Zeichenfolge im Betreff wird zu \u00fcber 14% eingetragen und immerhin 0,5% der Bots tragen in verschiedene Felder den gleichen Inhalt ein.<br>Die anderen der hier vorgestellten Methoden konnten allerdings bereits fast 99% der Spams filtern, so dass diese Wortfilter nur das fehlende T\u00fcpfelchen auf den \u201ei\u201c f\u00fcr eine nahezu 100%ige Spam-Abwehr darstellt. \u00bbNahezu\u00ab deshalb, weil sich Spam-Inhalte \u00e4ndern und z.B. f\u00fcr neue Produkte geworben wird, so dass bei den in drei Jahren gez\u00e4hlten 100.000 Spam-Versuchen k\u00fcrzlich doch ein sehr intelligent programmierter Spam-Bot Erfolg hatte \u2014 aber danach aufgrund angepasster Wortfilter nicht mehr.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Umbruch extrem langer Zeichenfolgen durch Einf\u00fcgen von Leerzeichen schlie\u00dflich dient nicht nur der Stabilisierung des Layouts einer Seite. Spam-Links haben oft eine extrem lange URL, die nat\u00fcrlich kein Leerzeichen enthalten kann. Kommen solche URLs mehrfach vor, ist dies ein relativ sicheres Indiz f\u00fcr Spam. Meine Wordwrap-Funktion z\u00e4hlt daher auch die erforderlichen Umbr\u00fcche zur Spam-Erkennung mit einer Quote von \u00fcber 45%.<br>Aber auch das Gegenteil kommt vor: \u00dcber 3% der Spam-Bots setzen Zeilenumbr\u00fcche in einzeilige Eingabefelder.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.stopforumspam.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.stopforumspam.com\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Captchas sind Bl\u00f6dsinn &#8211; Alternativen gegen Spam Captchas sind mehr oder oft weniger entzifferbare Zeichenfolgen, die zunehmend vor dem Versenden eines Formulars in einer Grafik erkannt und m\u00fchsam in ein Eingabefeld \u00fcbertragen werden m\u00fcssen. Das behindert vor allem Besucher mit Sehschw\u00e4chen und ist zudem zur Abwehr von Spam (unerw\u00fcnschten automatisierten Eintr\u00e4gen) auch v\u00f6llig unn\u00f6tig. Ich [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-601","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wiki.ad-libitum.info\/index.php?rest_route=\/wp\/v2\/pages\/601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiki.ad-libitum.info\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wiki.ad-libitum.info\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.ad-libitum.info\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.ad-libitum.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=601"}],"version-history":[{"count":0,"href":"https:\/\/wiki.ad-libitum.info\/index.php?rest_route=\/wp\/v2\/pages\/601\/revisions"}],"wp:attachment":[{"href":"https:\/\/wiki.ad-libitum.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}