<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>compufreak</title>
	<atom:link href="http://www.compufreak.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.compufreak.info</link>
	<description>Blog und Vodcast über Computer, Webdesign und den Sinn des Lebens</description>
	<lastBuildDate>Mon, 30 Jan 2012 16:02:41 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Querwebein.de</title>
		<link>http://www.compufreak.info/2012/01/30/querwebein-de/</link>
		<comments>http://www.compufreak.info/2012/01/30/querwebein-de/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 16:02:41 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[querwebein]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2306</guid>
		<description><![CDATA[Jetzt geht's los!
Viele haben mich nun schon gefragt, was mein nächstes Projekt wird... nun: Viel möchte ich noch nicht verraten, aber ich gebe euch einen Tipp: <a href="http://www.querwebein.de/" title="Querwebein.de">www.querwebein.de</a>]]></description>
			<content:encoded><![CDATA[<p>Jetzt geht&#8217;s los!<br />
Viele haben mich nun schon gefragt, was mein nächstes Projekt wird&#8230; nun: Viel möchte ich noch nicht verraten, aber ich gebe euch einen Tipp: <a href="http://www.querwebein.de/" title="Querwebein.de">www.querwebein.de</a></p>
<p>Weitere Infos gibts per Newsletter <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2012/01/30/querwebein-de/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spamschutzmechanismen für die eigene Homepage</title>
		<link>http://www.compufreak.info/2011/09/06/spamschutzmechanismen-fur-die-eigene-homepage/</link>
		<comments>http://www.compufreak.info/2011/09/06/spamschutzmechanismen-fur-die-eigene-homepage/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 19:54:16 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP-Scripte]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2288</guid>
		<description><![CDATA[Im Netz findet man unglaubliche Zahlen sobald es um das Thema Spam-Aufkommen geht. Einige sprechen da von ca. 80 Billionen Spam-Emails – jährlich. Tendenz: Steigend. Und diese Zahlen beziehen sich lediglich auf Email-Spam. Das Spam-Aufkommen auf der eigenen Website ist ebenfalls eine Plage für all jene, die an sich selbst den Anspruch stellen ihren Online-Auftritt Spam-frei zu halten.]]></description>
			<content:encoded><![CDATA[<div id="attachment_2290" class="wp-caption alignright" style="width: 310px"><a href="http://www.compufreak.info/wp-content/uploads/2011/09/titelbild.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/09/titelbild-300x199.png" alt="NEIN! ... Ich habe Email in meinem Spam!" title="Email im SPAM." width="300" height="199" class="size-medium wp-image-2290" /></a><p class="wp-caption-text">Titelbild: Die SPAM-Flut</p></div>
<p><strong>Vorwort</strong></p>
<p>Im Netz findet man unglaubliche Zahlen sobald es um das Thema Spam-Aufkommen geht. Einige sprechen da von ca. 80 Billionen Spam-Emails – jährlich. Tendenz: Steigend. Und diese Zahlen beziehen sich lediglich auf Email-Spam. Das Spam-Aufkommen auf der eigenen Website ist ebenfalls eine Plage für all jene, die an sich selbst den Anspruch stellen ihren Online-Auftritt Spam-frei zu halten.</p>
<p><strong>In diesem Artikel erfahren Sie:</strong></p>
<ul>
<li>Wie eine Maschine einen Menschen von einem böswilligen Artgenossen unterscheiden lernt.</li>
<li>Welche einfachen Tricks große Teile des täglichen Spams abfangen.</li>
<li>Mit welchen Methoden sich die eigene Email-Adresse im Web vor Crawlern schützen lässt.</li>
<li>Warum es gar nicht so schwer ist ein Captcha zu basteln.</li>
<li>Welche Instant-Lösungen bereits zur Verfügung stehen.</li>
<li>Mit welchen Erweiterungen man Content-Management-Systeme erfolgreich gegen Spam verteidigt.</li>
</ul>
<p><strong>Was Sie vorher besitzen sollten:</strong></p>
<ul>
<li>Fortgeschrittene Kenntnisse in PHP (Session, Grafiken „on-the-fly“, etc.).</li>
<li>Gegebenenfalls grundlegende Kenntnisse bezüglich des jeweiligen CMS.</li>
</ul>
<p><strong>Einleitung</strong></p>
<p>Website-Spam: Er ist nicht ungefährlich, denn er enthält oft Links zu böswilligen „Angeboten“. Auch wirft er kein gutes Licht auf die eigene Website. Ja oft ist er sogar ein Merkmal ungepflegter oder verwaister Projekte. Schön anzusehen ist er auch nicht. Leider kann man ihn nicht einfach irgendwo abstellen: Er muss bekämpft werden. Da man als gewöhnlicher Web-Entwickler weder Zeit noch Lust hat den Ursprung dieses Übels zu bekämpfen, muss man notgedrungen Spam-Schutzmechanismen implementieren um diesem Problem habhaft zu werden.<br />
Machen wir uns nichts vor: Wir können der Spam-Flut weder entkommen noch eine Sandburg bauen die stark genug wäre ihr für immer stand zu halten. Jedoch gibt es Mittel und Wege Spam zu „behindern“.<br />
Da die wenigsten diese eigentlich stupide Aufgabe einem Menschen auftragen würden (welcher zudem unglücklicherweise auf Bezahlung besteht), muss der pfiffige Web-Entwickler diesen Vorgang automatisieren. Folglich ist es ein Kampf der Maschinen untereinander: Ein Turing-Test<sup class='footnote'><a href='#fn-2288-1' id='fnref-2288-1'>1</a></sup>. Doch wie unterscheidet eine Maschine einen Menschen von einem Artgenossen?</p>
<p><strong>Allgemeine Vorgehensweise</strong></p>
<p>Im Folgenden werden einige simple Methoden beschrieben, mittels PHP zu bestimmen, ob es sich bei einer Nachricht (z.B. in einem Gästebuch) um Spam handelt oder nicht. Normalerweise sollten mehrere dieser Methoden nebeneinander eingesetzt werden. Idealerweise baut man diese Mechanismen so, dass für einen Aspekt, der auf Spam hindeutet ein oder ggf. auch mehrere Punkte vergeben werden. Nachdem alle Funktionen die Nachricht analysiert haben, wird diese je nach Punktzahl entweder als Spam eingeordnet oder nicht. Das hat den Vorteil, dass man die „Strenge“, nach der Spam identifiziert wird leicht justieren kann. Um ganz sicher zu gehen, dass man niemanden zu unrecht als Spam abtut, kann man vermeintliche Spam-Nachrichten auch in der Datenbank belassen und nur vorerst sperren. Später geht man diese Nachrichten dann von Hand durch und gibt diese ggf. frei (siehe Abb. 2).  </p>
<p><a href="http://www.compufreak.info/wp-content/uploads/2011/09/ablauf.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/09/ablauf-279x300.png" alt="" title="ablauf" width="279" height="300" class="aligncenter size-medium wp-image-2291" /></a></p>
<p><strong>1. Schutz durch eine Blacklist</strong></p>
<p>Eine naheliegende Lösung ist die sog. Blacklist, also die „schwarze Liste“. Auf ihr werden Schimpfwörter oder gar ganze Website-Adressen gepflegt. Enthält ein Eintrag (zum Beispiel in ein Gästebuch) eines oder mehrere dieser Wörter, kann davon ausgegangen werden, dass es sich dabei um Spam handelt. Oftmals wird von einer Blacklist mit der Begründung sie sei zu aufwändig und nicht ausreichend abgesehen. Dabei kann man bereits mit einer Handvoll Begriffen gut 60% allen Spams aussortieren. Man braucht sich dazu lediglich ein paar Spam-Einträge anzusehen. In den meisten Fällen geht es um Viagra oder andere medizinische Produkte. An zweiter Stelle folgen dann häufig „Werbe-Anzeigen“ für Websites mit pornographischem Inhalt. Bringt man nun nur ein paar gängige Begriffe aus diesen Bereichen der Blacklist bei, schiebt man damit einem Großteil des Spams einen Riegel vor. Ebenfalls nützlich sind Begriffe wie „kaufen“, „günstig“ oder „free“. Lediglich eine Sache sollte man dann noch beachten: Spam ist in den meisten Fällen  englisch. Eine mehrsprachige Blacklist ist also ratsam.</p>
<p>Glücklicherweise ist die Umsetzung einer solchen Blacklist mittels PHP nicht sonderlich schwer:<br />
Als erstes muss man natürlich ein Formular in HTML erstellt haben. Die Daten daraus müssen von einem entsprechenden PHP-Script abgefangen werden. Dann werden die einzelnen Begriffe der Blacklist zur einfacheren Handhabung in einen Array abgespeichert. Dazu gibt es zwei Möglichkeiten: Entweder werden die Begriffe und der Array direkt im Quellcode abgelegt, das kann allerdings bei einer langen Blacklist umständlich werden. Oder die Begriffe werden in einer anderen Datei (zum Beispiel einer TXT-Datei) abgelegt. Wobei die Begriffe jeweils durch einen Zeilenumbruch getrennt sein müssten. Handlicher ist letztere Methode. Ein Beispiel für eine sehr kurze Blacklist:</p>
<p>günstig<br />
cheap<br />
free<br />
viagra</p>
<p>Durch folgenden Befehl wird die Datei (in diesem Fall „blacklist.txt“) aufgerufen und der Inhalt in einen Array ($blacklist_array) gespeichert:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$blacklist_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'blacklist.txt'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Um herauszufinden, wie oft eine Zeichenkette in einer anderen Zeichenkette vorkommt, benötigt man den Befehl substr_count(). Dieser wird für jedes Element des Arrays, sprich für jedes „verbannte“ Wort neu ausgeführt. Jedes Vorkommen eines solchen Wortes wird ein Zähler um eins erhöht.</p>
<p>Sind diese beiden Grundlagen bekannt, wird der Rest nicht schwer:</p>
<p><em>Listing 1.1. Simple Blacklist-Funktion</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #666666; font-style: italic;">// Inhalt der Nachricht abrufen </span><br />
<span style="color: #000088;">$nachricht</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nachricht'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #666666; font-style: italic;">// blacklist.txt öffnen und in Array $blacklist_array speichern (Eine Zeile = Ein</span><br />
<span style="color: #666666; font-style: italic;">// Element) </span><br />
<span style="color: #000088;">$blacklist_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'blacklist.txt'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #666666; font-style: italic;">// Zähler für die gefundenen Wörter aus der Blacklist </span><br />
<span style="color: #000088;">$anzahl</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #666666; font-style: italic;">// Jeweils ein Wort der Blacklist nehmen, in $blackword speichern und mitzählen, </span><br />
<span style="color: #666666; font-style: italic;">// wie oft das Wort in der Nachricht auftaucht </span><br />
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$blacklist_array</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$blackword</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$anzahl</span> <span style="color: #339933;">+=</span> <span style="color: #990000;">substr_count</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$nachricht</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$blackword</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<br />
<span style="color: #666666; font-style: italic;">// Bestimmen, ob die Anzahl der &quot;Spam-Wörter&quot; niedrig genug ist </span><br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$anzahl</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">2</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde nicht als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>Natürlich lässt sich dieses Script noch verbessern. So ist es momentan noch machtlos gegen Dinge wie „Leet-Speak<sup class='footnote'><a href='#fn-2288-2' id='fnref-2288-2'>2</a></sup>“ (Buchstaben durch ähnlich aussehende Zahlen ersetzen) oder sonstige Abstraktionen.</p>
<p><strong>2. Schnell-Tippen: Zeit ist Geld?</strong></p>
<p>Eine andere Möglichkeit Spam zu erkennen besteht darin die Schreibgeschwindigkeit zu ermitteln. Denn welcher Spam-Bot nutzt denn nicht „Copy-&#038;-Paste“? Ein Spam-Eintrag benötigt meist nur sehr kurze Zeit. Misst man nun die Zeit seit dem Laden der Formular-Seite bis zum Empfang der Formular-Daten, kann man daraus und aus der Anzahl aller Zeichen im Formular die Tastenanschläge errechnen. Das Ergebnis ist zwar leicht verfälscht, wenn ein echter Benutzer die Seite besucht, da dieser nicht sofort anfängt zu tippen, doch das setzt seine errechneten Tastaturanschläge ja nur herunter.</p>
<p>Die Zeit berechnen wir mit einem Timestamp (also sekundengenau). Es liegt zwar nahe, diesen Timestamp zusammen mit den anderen Formular-Daten in einem versteckten Feld zu verschicken, dies ist aber zu unsicher, da der Spam-Bot diese Werte manipulieren kann. Aus diesem Grund hinterlegen wir den Timestamp in einer Session. Bei der Auswertung rufen wir ihn dann wieder ab, errechnen die Differenz, ermitteln die Anzahl aller Zeichen im Formular und errechnen daraus die Tastenanschläge. Ein verdächtiger Wert liegt bei ungefähr 8 Anschläge pro Sekunde aufwärts.</p>
<p>Auf der Seite des Formulars:</p>
<p><em>Listing 2.1. Speichern des Timestamps in die Session-Variable</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Session-Start </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Speichern des Timestamps in die Session-Variable </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_start'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>Bei der Auswertung:</p>
<p><em>Listing 2.2. Auswertung der Daten und Errechnen des Tastenanschlags</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Session-Start </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&lt;em&gt;[… HTML-Grundgerüst, etc. ...]&lt;/em&gt;<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Name abrufen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Inhalt der Nachricht abrufen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$nachricht</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nachricht'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Timestamp abrufen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$spam_check_start</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_start'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Aktuellen Timestamp ermitteln </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$spam_check_ende</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Differenz ermitteln </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$spam_check_dauer</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$spam_check_ende</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$spam_check_start</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Anzahl aller Buchstaben errrechnen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$anzahl_aller_buchstaben</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #000088;">$nachricht</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Anschlage pro Sekunde errrechnen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$anschlaege_pro_sekunde</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$anzahl_aller_buchstaben</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$spam_check_dauer</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$anschlaege_pro_sekunde</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">9</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ggf. Meldung ausgeben </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde nicht als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Fehlermeldung ausgeben, ggf. Punkt-Zähler entsprechend verändern </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p><strong>3. Leere Eingabe-Felder</strong></p>
<p>Da Spam-Bots oft die Angewohnheit haben alle Felder auszufüllen, kann es schnell passieren, dass auch unsichtbare Formular-Elemente mit Inhalten gefüllt werden. Dies tun normale Besucher nicht: Ein weiteres Unterscheidungsmerkmal.<br />
Dazu muss im Formular lediglich ein unsichtbares, leeres Element hinzugefügt werden. Inzwischen haben Spam-Bots meistens schon gelernt, dass „versteckte Eingabefelder“ (&lt;input type=“hidden“ /&gt;) besser ignoriert werden sollten. Deshalb ist es ratsamer ein ganz normales Eingabefeld (&lt;input type=“text“ /&gt;) anzulegen, welches auch keinen auffälligen Namen trägt. Dieses wird dann einfach mit der CSS-Eigenschaft display unsichtbar gemacht (&lt;input type=“text“ style=“display:none;“ /&gt;). Ist das Feld bei der Auswertung mit Inhalt gefüllt, steigt erneut die Spam-Wahrscheinlichkeit.</p>
<p><strong>4. Kannst du rechnen?</strong></p>
<p>Eine weitere beliebte Möglichkeit Spam abzufangen besteht darin, dem Besucher eine einfache Rechenaufgabe zu stellen. Das Ergebnis muss (korrekt) in ein Formularfeld eingetragen werden. Es wird bei der Auswertung überprüft. Da viele Spam-Bots immer noch nicht „rechnen“ können, ist es ein geeignetes Kriterium. Leider ist es jedoch für den Besucher mit Mehraufwand verbunden. Die Entscheidung, ob dies zumutbar ist, liegt beim Entwickler.</p>
<p>Auf der Formular-Seite müssen zuerst die beiden Zufalls-Zahlen und die Rechenart (Addition oder Subtraktion) ermittelt werden. Das Ergebnis wird in die Session-Variable gespeichert, die Rechnung im Formular ausgegeben.</p>
<p><em>Listing 4.1. Vorbereiten einer Rechenaufgabe</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Session-Start </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Ermitteln der ersten Zufallszahl </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$zahl1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span> <span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">20</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Ermitteln der zweiten Zufallszahl </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$zahl2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">20</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Bestimmen einer Rechenart (+ o. -) </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// und dem entsprechenden Ergebnis </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$zahl1</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$zahl2</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$rechenart</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">' + '</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$ergebnis</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zahl1</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$zahl2</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$rechenart</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">' - '</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$ergebnis</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zahl1</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$zahl2</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Speichern des Timestamps in die Session-Variable </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_rechnung'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ergebnis</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p><em>Listing 4.2. Ausgeben der Rechenaufgabe im Formular</em></p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span>&gt;</span>Bitte ausrechnen: <span style="color: #009900;">&lt;?php echo $zahl1.$rechenart.$zahl2; ?&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span> <br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;spam_check_rechnung_besucher&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Die Auswertung ist nun ziemlich simpel. Auch hier könnten Spam-Punkte vergeben werden:</p>
<p><em>Listing 4.3. Auswertung der Rechnung</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Session-Start </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&lt;em&gt;[... HTML-Grundgerüst, etc. ...]&lt;/em&gt;<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Korrektes Ergebnis abrufen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$spam_check_rechnung</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_rechnung'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Erhaltenes Ergebnis abrufen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$spam_check_rechnung_besucher</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_rechnung_besucher'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Auswertung </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$spam_check_rechnung</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$spam_check_rechnung_besucher</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ggf. Meldung ausgeben </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde nicht als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Fehlermeldung ausgeben, ggf. Punkt-Zähler entsprechend verändern </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>Diese Methode funktioniert leider nicht mehr bei alle Spam-Bots, dennoch ist sie häufig noch effektiv, denn die Schwierigkeit für die Maschine besteht dabei nicht darin die Rechnung zu lösen, sondern zu begreifen, dass sie eine Rechnung lösen muss. </p>
<p><strong>5. Wie heißt Max mit Vornamen?</strong></p>
<p>Ähnlich der Rechenmethode (s.o.) funktioniert auch folgende (verbesserte) Methode sehr gut: Erneut muss der Besucher die richtige Eingabe machen um sich als Nicht-Spammer zu identifizieren. Nur handelt es sich nicht um eine Rechenaufgabe, sondern um eine Frage. Die Fragen sollten folgende Kriterien erfüllen:</p>
<p>Sie sollten&#8230; </p>
<p>&#8230; zahlreich sein.<br />
&#8230; sich selbst beantworten.<br />
&#8230; in einem Wort beantwortet werden können.<br />
&#8230; nur eine mögliche Antwort zulassen.</p>
<p>Beispiele für solche Fragen:</p>
<ul>
<li>Wie heißt Max mit Vornamen?</li>
<li>Welche Farbe hat ein rotes Auto?</li>
<li>Der Erfinder des Zeppelin erfand den Z&#8230;?</li>
<li>Wie viele Seiten hat ein 200-seitiges Buch?</li>
<li>Eine CD ist rund. Was ist eine DVD?</li>
<li>Weihnachten kommt der W&#8230;?</li>
<li>etc.</li>
</ul>
<p>Die Schwierigkeit für die Maschine besteht hier darin, dass sie semantisch erfassen muss. Das heißt: Sie muss erst einmal die Frage verstehen. Das ist aber gar nicht so einfach.</p>
<p>Wie funktioniert dies nun im Detail?<br />
Zuerst brauchen wir eine Liste mit Fragen und Antworten. Dazu verwenden wir erneut einen Array. Die Daten werden diesmal nicht in eine TXT-Datei gelegt, sondern direkt in den Array. Diesen kann man ja bei Bedarf in eine andere PHP-Datei auslagern. Auf der Formular-Seite ermitteln wir dann per Zufall eine Frage und lassen sie ausgeben. Die Antwort speichern wir in die Session-Variable. Die Frage samt Eingabefeld wird im Formular ausgegeben:</p>
<p><em>Listing 5.1. Generierung und Ausgabe einer Frage.</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Session-Start </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Erstellen des Arrays (&lt;Nummer der Frage&gt; =&gt; &lt;Frage&gt;, &lt;Antwort&gt;) </span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$fragen_array</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">0</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Wie hei&amp;szlig;t Max mit Vornamen?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Max'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Welche Farbe hat ein rotes Auto?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'rot'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Wieviele Ecken hat ein Dreieck?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'drei'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Wie viele Seiten hat ein 200-seitiges Buch'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'200'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Fridas Mofa ist gelb. Welche Farbe hat es?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'gelb'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Ermitteln der Frage </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$frage_nummer</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$fragen_array</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Speichern des Timestamps in die Session-Variable </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_frage'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fragen_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$frage_nummer</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p><em>[... HTML-Grundgerüst, etc. ...]</em></p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span>&gt;</span>Beantworte: <span style="color: #009900;">&lt;?php echo $fragen_array<span style="color: #66cc66;">&#91;</span>$frage_nummer<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>; ?&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span> <br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;spam_check_frage_besucher&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Bei der Auswertung des Formulars wird es auf Spam überprüft, indem einfach die Antwort des Besuchers mit der richtigen Antwort aus der Session-Variable verglichen wird. Vor dem Vergleich jedoch werden beide Antworten mit der Funktion strtolower() in Kleinbuchstaben umgewandelt, damit Abweichungen in Groß- und Kleinschreibung irrelevant werden:</p>
<p><em>Listing 5.2. Auswertung der Antwort des Besuchers.</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Session-Start </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&lt;em&gt;[... HTML-Grundgerüst, etc. ...]&lt;/em&gt;<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Korrektes Ergebnis abrufen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$spam_check_frage</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_frage'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Erhaltenes Ergebnis abrufen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$spam_check_frage_besucher</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_frage_besucher'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Auswertung </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$spam_check_frage</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$spam_check_frage_besucher</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ggf. Meldung ausgeben </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde nicht als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Fehlermeldung ausgeben, ggf. Punkt-Zähler entsprechend verändern </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nachricht wurde als Spam eingestuft!'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>Natürlich lässt sich auch dieses Beispiel noch stark ausbauen. So ist ein größerer Fragen-Katalog ebenso von Vorteil, wie mehrere Antwortmöglichkeiten (um verschiedenen Schreibweisen, etc. vorzubeugen). </p>
<p><strong>6. Wo hast du eigentlich deine Augen?</strong></p>
<p>Eine Abwandlung der semantischen Frage (s.o.) ist sogar noch effektiver und sicherer als selbige: Anstatt eine Frage zu stellen, muss der Inhalt eines Bilds mit nur einem Wort beschrieben werden. Auf dem Bild sollten einfache Dinge mit kurzen Bezeichnungen abgebildet sein. Außerdem sollte nur genau ein Gegenstand zu sehen sein, damit keine Verwirrung aufkommt. So könnte der Besucher zum Beispiel gebeten werden eine Birne, einen Apfel, einen Hund, ein Haus oder Millionen andere Dinge zu identifizieren.<br />
Die technische Umsetzung funktioniert vom Prinzip her genauso, wie die der semantischen Frage (s.o.). Nur wird hier keine Frage ausgegeben, sondern ein kleiner HTML-Code um das entsprechende Bild einzubinden.</p>
<p><strong>7. Doppelt hält besser?</strong></p>
<p>Da Spam-Bots oft die Angewohnheit haben Felder, von denen sie nicht wissen, was das Script an Inhalten erwartet, einfach mit irgendwelchen Links zu füllen, kommt es auch oft vor, dass solche Felder mit den gleichen Inhalten gefüllt werden. Es lohnt sich also, alle Eingabefelder auf doppelten Inhalt zu prüfen. Wurden mehrere Eingabefelder identisch ausgefüllt, handelt es sich wohl um einen Spam-Bot. Auch hierfür könnten bei Bedarf wieder Spam-Punkte vergeben werden.</p>
<p><strong>8. Captcha im Eigenbau</strong></p>
<p>Leider werden die Spam-Bots immer besser. Um dieser Entwicklung entgegen zu treten, muss man sich schon tolle Dinge einfallen lassen. Die oben beschriebenen Methoden sollten in Kombination in den meisten Fällen hinreichend sein. Um die Sicherheit noch weiter zu steigern, bieten sich sog. Captchas<sup class='footnote'><a href='#fn-2288-3' id='fnref-2288-3'>3</a></sup> an. Das sind kleine Grafiken, welche eine Zeichenkombination abbilden, welche der Besucher abtippen muss. Das ist im Prinzip auch eine gute Idee. Leider hat sie bei den meisten Umsetzungen einige Nachteile:</p>
<p>Da Spam-Bots die Fähigkeit entwickeln die Codes solcher Grafiken auszulesen, werden dies immer abstrakter und unlesbarer.<br />
Damit der Code nicht mit einem Wörterbuch abgeglichen werden kann, werden nur noch zufällig generierte Buchstaben- und Zahlenkombinationen verwendet.<br />
Daher empfinden die Besucher empfinden sie schnell als lästig.</p>
<p>Diese Nachteile kann man aber auch recht einfach beseitigen oder zumindest abschwächen: </p>
<p>So sollte ein Bild nicht verunstaltet werden, nur damit man die Schrift nicht mehr lesen kann. Dann sollte man lieber eine ausgefallenere Schriftart nehmen. Bunte Sterne, Hintergründe und Linien sind ebenfalls hinderlich. Sie erhöhen zwar die Sicherheit, schrecken dafür aber Besucher ab, wenn sie nicht zum Design passen oder zu viel Zeit beanspruchen.<br />
Zufällig generierte Codes müssen nicht wie Kauderwelsch klingen: Zahlen kann man eigentlich weglassen, denn ob 26 oder 36 Zeichen zur Auswahl stehen macht auch keinen besonders großen Unterschied mehr. Werden nur Buchstaben verwendet, kann man schön-klingende Phantasie-Wörter generieren indem man Konsonanten und Vokale abwechselt. Das vermindert die Sicherheit zwar ein wenig, aber auch das nur unter der Voraussetzung, dass der Spam-Bot auf so etwas programmiert wurde.<br />
Wie oben bereits angesprochen können auch Bilder von Gegenständen, die es zu benennen gilt, als Captchas verwendet werden, denn solch eine Aufgabe setzt eine hohe Rechenleistung des Spam-Bots voraus. Vergessen wir nicht, dass das menschliche Gehirn ein Meister das abstrakten Denkens ist.<br />
Auch könnte man die langweiligen Codes durch die oben beschriebenen Fragen ersetzen. Dann steht der Spam-Bot nämlich nicht nur vor dem Problem die Frage „Wie heißt Max mit Vornamen?“ zu beantworten, sondern diese auch erst mal zu lesen.</p>
<p>Nun wollen wir ein ganz simples Captcha basteln und es mit unseren Fragen (s.o.) kombinieren. Dazu verwenden wir die Bordmittel PHPs und ein angepasstes Formular. Die Grafiken werden „on-the-fly<sup class='footnote'><a href='#fn-2288-4' id='fnref-2288-4'>4</a></sup>“ generiert. Dazu benötigen wir ein zusätzliches PHP-Script, welches als Grafik (mit Image-Tag) in das HTML-Formular eingebunden wird und die richtige Lösung in die Session-Variable schreibt:</p>
<p><em>Listing 8.1. Generierung eines Captchas</em></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Session-Start </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Senden des Headers </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Content-type: image/png&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Erstellen des Arrays (&lt;Nummer der Frage&gt; =&gt; &lt;Frage&gt;, &lt;Antwort&gt;) </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$fragen_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">0</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Wie heißt Max mit Vornamen?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Max'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Welche Farbe hat ein rotes Auto?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'rot'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Wieviele Ecken hat ein Dreieck?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'drei'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Wie viele Seiten hat ein 200-seitiges Buch'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'200'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Fridas Mofa ist gelb. Welche Farbe hat es?'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'gelb'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Ermitteln der Frage </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$frage_nummer</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$fragen_array</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Abspeichern der Frage </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$frage</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fragen_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$frage_nummer</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Speichern der Antwort in die Session-Variable </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'spam_check_frage'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fragen_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$frage_nummer</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Generieren der Grafik (400x30) </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$grafik</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecreate</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">400</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">30</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Hintergrund der Grafik weiß machen </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$grafik</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Text-Farbe generieren (Schwarz) </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$text_farbe</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$grafik</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Text ausgeben. Parameter: </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Variable der Grafik </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Schriftgröße </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Abstand zum linken Rand </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Abstand zum oberen Rand (Ausrichtung wird so berechnet, dass die Schrift </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// mittig steht) </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Text </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Farbe des Schriftzugs </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">ImageString</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$grafik</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span> <span style="color: #990000;">ceil</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">15</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">imagefontheight</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">4</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">2</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$frage</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$text_farbe</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;">// Grafik ausgeben (im PNG-Format) </span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #990000;">imagepng</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$grafik</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>Das Formular ist im Prinzip das gleiche wie in Listing 5.1. Nur wird die Frage nicht dort, sondern in der Datei captcha.png.php generiert. Diese wiederum wird eingebunden:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;captcha.png.php&quot;</span> </span><br />
<span style="color: #009900;"><span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Bitte aktivieren Sie die </span><br />
<span style="color: #009900;">Anzeige von Grafiken in Ihrem </span><br />
<span style="color: #009900;">Browser!&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Die Auswertung bleibt unverändert (siehe Listing 4.2).</p>
<p>Mithilfe solcher Captchas ist man nun einen ganzen Schritt weiter. Natürlich lässt sich diese Methode aber noch stark ausbauen.</p>
<p><strong>Instant-Lösungen</strong></p>
<p>Im Bereich Spam-Abwehr gibt es viele Angebote. Besonders wenn es um Captchas geht. Die interessantesten Lösungen sind folgende:</p>
<p>1. Die wohl bekannteste Lösung lautet reCaptcha (Website: www.google.com/recaptcha). Es handelt sich dabei um ein System, welches von Google übernommen und fortgeführt wurde. Google scannt alte Bücher und Zeitschriften ein. Die einzelnen Wörter landen in einer riesigen Datenbank. Wird ein reCaptcha aufgerufen, bekommt der Besucher zwei Wörter zu sehen und muss sie abtippen. Das Besondere: Die Antworten werden gespeichert. Die einzelnen Wörter werden mehrmals von verschiedenen Besuchern abgetippt. Die Antwort, die am häufigsten gegeben wird, akzeptiert Google dann als „richtig“. Auf diese Weise werden wahnsinnig viele Captchas generiert und alte Zeitschriften digitalisiert. Diese Methode gilt als sehr effektiv und sicher. Allerdings ist die Integration in die eigene Website nicht unbedingt für „blutige Anfänger“ geeignet. Erfahrenere Programmierer sollten damit aber keine Probleme haben. Außerdem besitzt das reCaptcha ein recht auffälliges und platz-einnehmendes Aussehen. Das kann man zwar anpassen, aber das wiederum ist mit nicht wenig Arbeit verbunden. Alles in Allem eine der besseren Lösungen.<br />
2. Eine weitere sehr schöne Captcha-Lösung ist SecureImage von www.phpcaptcha.org. Die Grafiken sind simpler und die Integration in die eigene Website ein wenig einfacher als bei anderen „Instant“-Lösungen.<br />
3. Einen sehr interessanten Ausblick bietet www.animierte-captcha.de. Vor den Captchas „tanzen“ Symbole und Grafiken herum, sodass der Schriftzug nie vollständig zu sehen ist: Eine zusätzliche Herausforderung für einen Spam-Bot.</p>
<p>Diese „Instant“-Lösungen sind meistens schneller eingebaut als die eigenen Methoden. Außerdem sind sie in der Regeln doch deutlich sicherer und durchdachter. Dafür lassen sie sich nicht so leicht anpassen oder in das Design eingliedern. Auch handelt es sich (wie bei den Beispiele auch) fast immer um Captchas. Betrachtet man die oben beschriebenen Methoden, muss man sich allerdings fragen, ob man seine Besucher wirklich mit so etwas belästigen muss.</p>
<p><strong>Erweiterungen für Content-Management-Systeme</strong></p>
<p>Besonders komfortabel lebt man, wenn man ein CMS<sup class='footnote'><a href='#fn-2288-5' id='fnref-2288-5'>5</a></sup> für seine Website verwendet, denn für diese gibt es eigentlich immer Erweiterungen, Plugins oder Addons. Mit diesen lassen sich die Spammer schon deutlich einfacher ausschalten.</p>
<p>Eine kurze Übersicht hier:</p>
<p>WordPress: </p>
<ul>
<li>Akismet (Standard)</li>
<li>Block Spam By Math Reloaded (Schützt das Backend)</li>
<li>Peter&#8217;s Custom Anti-Spam (Sehr umfangreich)</li>
</ul>
<p>Joomla</p>
<ul>
<li>EasyCalcCheck PLUS</li>
<li>Core Design Captcha plugin</li>
<li>Akismet</li>
<li>XIJC</li>
</ul>
<p>Contao (ehemals TypoLight):</p>
<ul>
<li>honeypotForm (sehr schlicht)</li>
</ul>
<p>Typo3:</p>
<ul>
<li>TIMTAB Bad Behavior</li>
<li>SFP Anti SPAM</li>
<li>Simple Captcha</li>
</ul>
<p><strong>Schutz einer Email-Adresse vor Crawlern</strong></p>
<p>Da in dem Impressum jeder Website eine gültige Email-Adresse stehe muss, ist dies ein beliebter Angriffspunkt für Email-Crawler<sup class='footnote'><a href='#fn-2288-6' id='fnref-2288-6'>6</a></sup>. Diese lesen die Adresse aus und speichern sie in ihre Datenbank. Wie von Zauberhand landet dann Spam im Posteingang. Um dies zu verhindern gibt es wahnsinnig viele Methoden. Einige besser, andere schlechter:</p>
<p>Kodierung der einzelnen Zeichen: Jedes Zeichen wird in den entsprechenden HTML-Sonderzeichencode umgewandelt. Das ist die beliebteste Lösung. Leider auch die mit am wenigsten effektive, denn die Crawler sind schon lange in der Lage diesen Trick zu durchschauen.<br />
Einbinden als Grafik: Effektiver, jedoch leider auch nicht besonders ansehnlich und total „Copy-&#038;-Paste“-unfreundlich. Die Adresse wird als Grafik gespeichert und eingebunden. Nicht optimal.<br />
Maskieren der Adresse: Das @ wird durch Zeichenfolgen wie „ät“, „at“, „[at]“, etc. ersetzt. Doch auch das können die Crawler mittlerweile ganz gut durchschauen.<br />
Aus zwei mach&#8217; eins: Dabei handelt es sich um einen kleinen HTML-Trick. Es werden zwei Email-Adressen hintereinander gesetzt. Jede für sich ist nicht existent (bzw. totaler Quatsch). Streicht man jedoch den letzten Teil der ersten Adresse und den ersten Teil der letzten Adresse, entsteht aus dem Rest eine dritte: Die richtige. Alles was man tun muss, ist also mittels CSS die Teile dazwischen auszublenden. Beispiel:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span>&gt;</span>heinz <br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">small</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display:none;&quot;</span>&gt;</span> <br />
@nichtvorhanden.de<span style="color: #ddbb00;">&amp;nbsp;</span>gibtesnicht <br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">small</span>&gt;</span>@mueller.info<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span></div></td></tr></tbody></table></div>
<p>In diesem Beispiel sind die Adressen heinz@nichtvorhanden.de und gibtesnicht@mueller.info falsch. Lediglich die Kombination von beiden ist richtig: heinz@mueller.info.</p>
<p><strong>Anregungen</strong></p>
<p>Der Kreativität sind fast keine Grenzen gesetzt, geht es um die Spam-Bekämpfung. Lediglich die technischen Mittel binden den Programmierer an einen Rahmen. Dennoch sind weder alle Möglichkeiten Mensch und Maschine zu unterscheiden hier erklärt worden, noch sind sie ausgeschöpft. Alle Mechanismen lassen sich verbessern. Alle sind absolut ungesichert gegen Attacken (XSS und Co.). Alle Methoden einzubauen ist momentan auch noch viel Arbeit. Eine Klasse dafür zu schreiben wäre also von Vorteil und würde auf längere Sicht viel Aufwand ersparen. Kurzum: Auf geht’s!</p>
<p><strong>Nachwort</strong></p>
<p>Den Spam werden wir wohl nie ganz besiegen, doch mit geschickten Überlegungen lässt sich viel erreichen. Ich hoffe, ich konnte mit diesem Artikel einen Einstieg in das Thema bieten und zum Weitermachen anregen. Denn ausgereift sind die Scripte noch lange nicht.</p>
<p><strong>Im Internet</strong><br />
<a href="http://www.google.com/recaptcha/" title="http://www.google.com/recaptcha/" target="_blank">http://www.google.com/recaptcha/</a> &#8211; reCaptcha-Website<br />
<a href="http://www.phpcaptcha.org/" title="http://www.phpcaptcha.org/" target="_blank">http://www.phpcaptcha.org/</a> &#8211; Website des SecureImage-Projekts<br />
<a href="http://www.animierte-captcha.de/" title="http://www.animierte-captcha.de/" target="_blank">http://www.animierte-captcha.de/</a> &#8211; Website der animierten Captchas<br />
http://www.drweb.de/magazin/sichere-formulare-teil-4-spam-bots-masregeln/ &#8211; Ein Artikel zum Thema vom Dr. Web-Magazin<br />
<a href="http://de.wikipedia.org/wiki/CAPTCHA" title="http://de.wikipedia.org/wiki/CAPTCHA" target="_blank">http://de.wikipedia.org/wiki/CAPTCHA</a> – Wikipedia-Artikel zum Thema Captcha<br />
<a href="http://www.bizeps.or.at/news.php?nr=8627" title="http://www.bizeps.or.at/news.php?nr=8627" target="_blank">http://www.bizeps.or.at/news.php?nr=8627</a> – Sehr unterhaltsamer Beitrag zum Thema Captcha und Benutzerfreundlichkeit von Peter Purgathofer</p>
<div class='footnotes'>
<div class='footnotedivider'></div>
<ol>
<li id='fn-2288-1'>Was ist eigentlich der Turing-Test?<br />
Der Turing-Test wurde 1950 von Alan Turing entwickelt, um festzustellen, ob eine Maschine ein Denkvermögen haben kann, dass dem des Menschen ähnelt. Oft wird dieser Begriff auch mit dem Stichwort „Künstliche Intelligenz“ in einem Atemzug genannt. <span class='footnotereverse'><a href='#fnref-2288-1'>&#8617;</a></span></li>
<li id='fn-2288-2'>Was ist Leet-Speak?<br />
Leet-Speak leitet sich ab von dem englischen Begriff „elite“ (Elite) und „speak“ (Sprache). Es bezeichnet das Ersetzen von Buchstaben durch ähnlich aussehende Zahlen oder auch Sonderzeichen. So wird auch oft nur von „1337“ gesprochen, was „leet“ in „Leet-Speak“ bedeutet. Die 1 steht dabei für das L, die 3 für das große E und die 7 für das T. Ursprünglich wurde diese Substitutions-„Chiffre“ verwendet um heikle Emails vor dem automatisierten Abhören zu schützen. Heute findet es oft im Gamer-Bereich Anwendung.  <span class='footnotereverse'><a href='#fnref-2288-2'>&#8617;</a></span></li>
<li id='fn-2288-3'>Was sind eigentlich Captchas?<br />
Der Begriff „Captcha“ kommt aus dem Englischen und ist ein Akronym für „Completely Automated Public Turing test to tell Computers and Humans Apart“ („Vollautomatischer öffentlicher Turing-Test zur Unterscheidung von Computern und Menschen“). Ein Captcha ist meist eine Grafik, die ein verzerrtes Wort oder einen Code abbildet, der vom Besucher abgetippt werden muss, um zu beweisen, dass er selbst kein Spam-Bot ist. <span class='footnotereverse'><a href='#fnref-2288-3'>&#8617;</a></span></li>
<li id='fn-2288-4'>Was bedeutet noch gleich „on-the-fly“?<br />
Der Begriff „on-the-fly“ heißt im Bezug auf durch PHP generierte Grafiken, dass diese bei einem Aufruf durch einen Benutzer jedes mal neu erstellt werden müssen. Das heißt, sie können immer wieder anders aussehen. „On-the-fly“ bezeichnet also sozusagen den Moment zwischen Verlassen des Servers und der Ankunft beim Browser (auch wenn dies nicht ganz richtig ist). <span class='footnotereverse'><a href='#fnref-2288-4'>&#8617;</a></span></li>
<li id='fn-2288-5'>Wofür steht nochmal „CMS“?<br />
Ein CMS ist ein Content-Management-System (Inhalt-Verwaltungs-System). Es wird auf dem Webserver installiert und verwaltet Inhalte, Design und Struktur der Website sehr komfortabel. Die großen verfügen über eine Benutzerverwaltung, hunderte Erweiterungen und viele zusätzliche Funktionen. Große Websites kommen um ein CMS kaum noch herum. <span class='footnotereverse'><a href='#fnref-2288-5'>&#8617;</a></span></li>
<li id='fn-2288-6'>Worin besteht eigentlich der Unterschied zwischen Spam-Bot und Email-Crawler?<br />
Ein Spam-Bot durchsucht Websites nach Formularen, füllt sie aus und versucht so Backlinks für eine Website zu generieren oder Schadsoftware zu verteilen. Ein Email-Crawler such im Internet nach Email-Adressen und sammelt sie um später Spam zu verschicken. <span class='footnotereverse'><a href='#fnref-2288-6'>&#8617;</a></span></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/09/06/spamschutzmechanismen-fur-die-eigene-homepage/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rabottie 1.0 beta</title>
		<link>http://www.compufreak.info/2011/04/20/rabottie-1-0-beta/</link>
		<comments>http://www.compufreak.info/2011/04/20/rabottie-1-0-beta/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 17:08:00 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Online-Dienste]]></category>
		<category><![CDATA[projekt]]></category>
		<category><![CDATA[rabottie]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2276</guid>
		<description><![CDATA[Heute am 20.04.2011 geht Rabottie in die Beta-Phase. Ich habe mit dem Projekt vor gut zwei Monaten begonnen, nachdem ich eine Vorlage für eine persönliche Startseite ein wenig überarbeitet hatte. Der Blogger <a href="raphaelg.cwsurf.de">RaphaelG</a> veröffentlichte damals einen seiner leider nur wenigen Artikel. Er beschrieb, wie man sich für seinen Browser eine personalisierte Startseite in Form einer HTML-Datei und ein paar Grafiken basteln konnte und bot diese auch zum Download an. Das ganze sah sehr ansprechend aus, sodass ich mir die Datei herunterlud. ]]></description>
			<content:encoded><![CDATA[<p><strong>Voller Stolz kann ich nun mein neues Projekt freigeben: Rabottie.de!</strong><br />
<a href="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_011.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_011-300x221.png" alt="" title="Rabottie.de" width="300" height="221" class="alignright size-medium wp-image-2279 white-border" /></a><br />
Direkt vorweg: Es befindet sich nach 2 Monaten Entwicklungszeit noch in der Beta-Phase. Aktuell heißt das, dass einige Funktionen noch nicht wirklich gegen Fehler bzw. Fehleingaben abgesichert sind. Man sollte also &#8220;ordentlich&#8221; mit dem System umgehen. Leider hat sich in letzter Sekunde noch ein Fehler in den Widgets offenbart, sodass diese leider noch nicht einsatzbereit sind. Das werde ich aber in den nächsten Tagen beheben und die Widgets dann stark ausbauen <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Des Weiteren ist die Hilfe noch nicht angefangen, aber das sollte ja nicht soo sehr stören.</p>
<p>Heute am 20.04.2011 geht Rabottie in die Beta-Phase. Ich habe mit dem Projekt vor gut zwei Monaten begonnen, nachdem ich eine Vorlage für eine persönliche Startseite ein wenig überarbeitet hatte. Der Blogger <a href="raphaelg.cwsurf.de">RaphaelG</a> veröffentlichte damals einen seiner leider nur wenigen Artikel. Er beschrieb, wie man sich für seinen Browser eine personalisierte Startseite in Form einer HTML-Datei und ein paar Grafiken basteln konnte und bot diese auch zum Download an. Das ganze sah sehr ansprechend aus, sodass ich mir die Datei herunterlud. <a href="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_02.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_02-300x221.png" alt="" title="Rabottie.de - Was ist Rabottie?" width="300" height="221" class="alignright size-medium wp-image-2280 white-border" /></a><br />
Ich bastelte selbst noch ein wenig daran. Das Ganze hat mich dann so gepackt, dass ich im Internet nach einem Dienst suchte, der eine eigene Startseite generierte. Zu meinem Erstaunen fand ich nur unkomplizierten Schrott oder ineffiziente Systeme. Beides gefiel mir nicht. Das Internet muss gerade in so einem Bereich sehr einfach und intuitiv sein. Deshalb begann ich einen eigene Dienst zu entwickeln. Eine Entscheidung, die eigentlich so gar nicht in meinen Zeitplan passte. Ich war mir damals sicher, dass ich das Projekt sowieso wieder drangeben würde, doch zu meinem Erstaunen hielt ich durch. Und was dabei heraus kam ist so ziemlich mein erstes vollständig abgeschlossenes Projekt. Da habe ich mich selbst sehr überrascht.<br />
Nun geht mein Baby in die Beta-Phase. Ich habe auch bereits viel für die Zukunft geplant. Vor allem im Bereich der Widgets und Icons wird sich hoffentlich einiges tun.<br />
<a href="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_03.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_03-300x221.png" alt="" title="Rabottie.de - Eine Startseite" width="300" height="221" class="alignright size-medium wp-image-2281 white-border" /></a><br />
<strong>Was ist Rabottie?</strong></p>
<p>Rabottie bietet dir die Möglichkeit mehrere individuelle Startseiten mit deinen Lieblings-Websites online zu erstellen und zu verwalten. Die Links werden dabei angeordnet wie auf einem Desktop: Einfach und effektiv. Für noch mehr Komfort kannst du zusätzlich auf jede deiner Startseiten auch noch Widgets einbinden um direkt mit verschiedenen anderen Websites zu interagieren (Google, Facebook, Twitter, etc.). Das alles gibt es kostenlos, werbefrei und absolut schick! Einfach anmelden und loslegen.<br />
<a href="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_04.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_04-300x221.png" alt="" title="Rabottie.de - Eine Startseite" width="300" height="221" class="alignright size-medium wp-image-2282 white-border" /></a><br />
<strong>Direkt-Links</strong></p>
<p>Direkt-Links sind Links, die dich ohne Umweg zu der entsprechenden Startseite oder der Übersichtsseite führen. Das besondere ist, dass du dich dafür nicht erst einloggen musst. Du könntest einen dieser Direkt-Links also als deine Startseite im Browser festlegen. Das würde immer funktionieren, auch wenn du nicht eingeloggt bist. Es funktioniert sogar von anderen Computern aus. Damit niemand Schaden anrichten kann, sollte der Link mal in die falschen Hände gelangen, kann man, wenn man die Seite über einen Direkt-Link erreicht hat keine Änderungen vornehmen. Dein Benutzerkonto ist also weiterhin sicher!</p>
<p><strong>Zeitgesteuerte Seite</strong></p>
<p>Um noch mehr Zeit bzw. unnötige Klicks zu sparen, gibt es eine Zeitsteuerung. Auch diese ist über einen Direkt-Link erreichbar. Nach der Konfiguration dient sie als Weiterleitung. So kann der Benutzer angeben, an welchem Tag er zu welcher Uhrzeit an welche Startseite weitergeleitet werden will. Ich könnte also festlegen, dass ich Montags bis Freitags jeweils so bis 14 Uhr an meine Startseite mit meinen Schul-Sachen weitergeleitet werden will. Rufe ich nun zu dieser Zeit den Direkt-Link der Zeitsteuerung auf, gelange ich zu meiner Schul-Startseite <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<a href="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_05.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/04/rabottie_screenshot_05-300x221.png" alt="" title="Rabottie.de - Eine leere Startseite mit verändertem Hintergrund" width="300" height="221" class="alignright size-medium wp-image-2283 white-border" /></a><br />
<strong>Wie kann ich Rabottie unterstützen? </strong></p>
<p>Rabottie ist ein werbefreies, kostenloses Projekt. Das heißt im Klartext: Es kostet mich Geld, Zeit und Nerven. Viele Leute können nicht verstehen, warum ich diese drei grundlegenden Dinge in diesem Ausmaß in etwas investiere ohne etwas dafür zu bekommen. Allerdings übersehen diese Leute auch etwas: Durch meine gemeinnützige Arbeit im Internet revanchiere ich mich bei anderen, von deren kostenlosen Diensten und Hilfen ich profitiere. Denn ich bin der festen Überzeugung, dass das Internet ohne den ganzen Kommerz viel besser funktionieren würde. Wenn einfach alle Menschen kostenlos anderen Helfen, könnte das Internet viel effektiver sein. Ich bin sozusagen ein Internet-Kommunist <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Wie können Sie mich jetzt unterstützen? Ganz einfach: Das geringste, was Sie tun können, ist meinen Dienst zu verwenden. Wenn Sie etwas mehr tun möchten, können Sie ihn Freunden, Verwandten, befreundeten Verwandten, Kollegen oder den Leuten auf der Straße von meinem Dienst berichten (Allerdings besser erst, wenn ich mit der Beta-Phase durch bin <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). Wenn Sie dann immer noch nichts besseres mit Ihrer Zeit anzufangen wissen, können Sie sich einfach mal persönlich bei mir bedanken. Das freut mich immer riesig! Sollten Sie zu viel Geld haben, könnten Sie natürlich auch gerne etwas spenden <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Zum Abschluss einen kleinen Film. Mangels Zeit leider nicht besonders gut&#8230;</p>
<p><span class="youtube">
<object type="application/x-shockwave-flash" width="560" height="340" data="http://www.youtube.com/v/ttmg9Pq3Xt4?color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;modestbranding=1&amp;loop=&amp;showsearch=0&amp;rel=0&amp;hd=1">
<param name="movie" value="http://www.youtube.com/v/ttmg9Pq3Xt4?color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;modestbranding=1&amp;loop=&amp;showsearch=0&amp;rel=0&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=ttmg9Pq3Xt4&fmt=18">www.youtube.com/watch?v=ttmg9Pq3Xt4</a></p></p>
<p>Wenn ihr immer Up-2-Date sein wollt, folgt Rabottie doch auf <a href="http://www.facebook.com/pages/Rabottie/193906207320322">Facebook</a>!</p>
</div>
<div class="text_big_bottom"></div>
<h1 class="white-border">Update 23. April &#8217;11</h1>
<div class="text_big_top"></div>
<div class="text_big">
<hr />
<p>
Ich habe in den letzten Tagen erstaunlich viele eMails erhalten. Für dieses rege Feedback möchte ich ich hier recht herzlich bedanken. Die Tatsache, dass bereits wenige Stunden nach der Veröffentlichung der Beta-Version meines Projekts so viele Verbesserungsvorschläge eintrudeln, zeigt mir nicht nur, dass es in der Tat viel zu verbessern gibt, sondern auch, dass das Projekt Potenzial hat. Deshalb habe ich beschlossen meine Arbeiten an Rabottie schneller fortzusetzen als geplant. Damit ihr immer auf dem aktuellen Stand meiner Überlegungen seid, habe ich eine Roadmap und ein Changelog veröffentlicht. Beides erreichbar über die <a href="http://www.rabottie.de/">Rabottie-Startseite</a>. Für weitere Vorschläge bin ich immer zu haben <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8230; Obwohl ich jetzt erstmal ein paar Monate beschäftigt sein sollte XD</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/04/20/rabottie-1-0-beta/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Update: Geplantes Release meines nächsten Projekts</title>
		<link>http://www.compufreak.info/2011/04/06/update-geplantes-release-meines-nachsten-projekts/</link>
		<comments>http://www.compufreak.info/2011/04/06/update-geplantes-release-meines-nachsten-projekts/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 17:29:13 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[compufreak.info]]></category>
		<category><![CDATA[Online-Dienste]]></category>
		<category><![CDATA[compufreak]]></category>
		<category><![CDATA[freak]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[projekt]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2273</guid>
		<description><![CDATA[In einem vorherigen Post hatte ich ja bereits angekündigt, dass ich in diesem Monat mein neues Projekt veröffentlichen will. Dieses ist zwar noch lange nicht vollkommen, nimmt aber immer konkretere Züge an. In der Tat kann ich bald anfangen mir über die Formulierungen verschiedener Meldungen Gedanken zu machen. 

<strong>Geplant ist das Release für den 20. April 2011.</stron]]></description>
			<content:encoded><![CDATA[<p>In einem vorherigen Post hatte ich ja bereits angekündigt, dass ich in diesem Monat mein neues Projekt veröffentlichen will. Dieses ist zwar noch lange nicht vollkommen, nimmt aber immer konkretere Züge an. In der Tat kann ich bald anfangen mir über die Formulierungen verschiedener Meldungen Gedanken zu machen. </p>
<p><strong>Geplant ist das Release für den 20. April 2011.</strong></p>
<p>Ein oder zwei Tage vorher werde ich viele weitere Details, Screenshots und den offiziellen Namen meines Projekts preisgeben. Weitere Informationen gibt es hier: <a href="http://www.compufreak.info/2011/03/03/die-eigene-startseite/">http://www.compufreak.info/2011/03/03/die-eigene-startseite/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/04/06/update-geplantes-release-meines-nachsten-projekts/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux in der Wolke &#8211; Joli OS</title>
		<link>http://www.compufreak.info/2011/03/28/linux-in-der-wolke-joli-os/</link>
		<comments>http://www.compufreak.info/2011/03/28/linux-in-der-wolke-joli-os/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 20:10:36 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Online-Dienste]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Joli OS]]></category>
		<category><![CDATA[Jolicloud]]></category>
		<category><![CDATA[Web-OS]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2264</guid>
		<description><![CDATA[Nicht nur auf der CeBIT 2011 war Cloud-Computing das vorherrschende Thema. Auch die ersten Betriebssysteme setzen langsam auf die Datenwolke und fordern einen schnellen Internetzugang für die Bedienung. Die oft zitierte Cloud besteht dabei aus unzähligen Servern die über das Internet erreichbar sind. Auf diesen vernetzten Rechnern lassen sich Daten speichern und Programme starten - die Festplatte im Internet ersetzt in diesem Falle also den Speicher im eigenen Computer.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.compufreak.info/wp-content/uploads/2011/03/computer-jolicloud-only.png" alt="" title="JoliCloud-OS" width="180" height="141" class="alignright size-full wp-image-2268" />Der folgende Artikel wird bereitgestellt von <a href="http://de.depositphotos.com/">Bildagentur</a>.</p>
<p>Nicht nur auf der CeBIT 2011 war Cloud-Computing das vorherrschende Thema. Auch die ersten Betriebssysteme setzen langsam auf die Datenwolke und fordern einen schnellen Internetzugang für die Bedienung. Die oft zitierte Cloud besteht dabei aus unzähligen Servern die über das Internet erreichbar sind. Auf diesen vernetzten Rechnern lassen sich Daten speichern und Programme starten &#8211; die Festplatte im Internet ersetzt in diesem Falle also den Speicher im eigenen Computer.</p>
<p>Anstatt nur einzelne Dateien auf den Cloudserver zu verschieben gehen Cloud-Betriebssysteme noch einen Schritt weiter: Das Betriebssystem wird extrem klein gehalten und enthält nur die wichtigsten Komponenten und Treiber, Anwendungsprogramme und Nutzerdaten werden indes über das Internet geladen und gespeichert. Ein bekannter Vertreter der Gattung Cloud-OS ist Googles Chrome OS, das allerdings noch nicht marktreif ist und bislang nur auf wenigen ausgewählten Net- und Notebooks funktioniert. Deutlich weiter in der Entwicklung ist <a href="http://www.jolicloud.com/" target="_blank">Joli-OS</a>, dieses System ist voll nutzbar und bietet einen umfangreichen Hardwaresupport.<br />
<img src="http://www.compufreak.info/wp-content/uploads/2011/03/5513277152_8b221d1d53_o-300x175.png" alt="" title="JoliCloud" width="300" height="175" class="alignright size-medium wp-image-2269" /><br />
Zu Beginn der Entwicklung war Joli OS noch unter den Namen Jolicloud bekannt. Seit kurzem haben sich die Entwickler allerdings entschieden, dem Betriebssystem einen neuen Namen zu geben um sich von der eigens entwickelten Benutzeroberfläche namentlich abzusetzen &#8211; die behält den Namen <a href="http://www.jolicloud.com/" target="_blank">Joli-OS</a>. Bei Joli OS handelt es sich um eine auf Ubuntu basierende Linux-Distribution, aktuell wird der Kernel 2.6.35 eingesetzt. Soll Joli OS nur zum Testen installiert werden existiert ein Windows-Installer, der das System in einer virtuellen Umgebung aufsetzt und im Zweifel auch schnell wieder entfernen lässt. Soll komplett auf Joli OS umgestiegen werden, existiert auch die Möglichkeit, ein bootfähiges Installationsmedium herunterzuladen und zu installieren.</p>
<p>Selbst die Anmeldeoberfläche von Joli OS ist in HTML5 geschrieben, Anwendungen werden direkt vom Cloud-Webspace gestartet. Im Betriebssystem enthalten ist der Webbroser Chrome 10, auch Flash 10.2 ist bereits vorinstalliert. Die Benutzeroberfläche <a href="http://www.jolicloud.com/" target="_blank">Joli-OS</a> läuft dabei als eigenständige Anwendung. Vorteil der Cloudlösung: Das System benötigt extrem wenig Speicherplatz und abgespeicherte Daten lassen sich von jedem Rechner mit Joli OS erneut laden. Statt das gerade bearbeitete Bild also auf einem USB-Stick abzuspeichern wird die Datei in der Cloud gesichert. Meldet sich der Nutzer von einem beliebigen Rechner mit Joli OS an seinem Benutzerkonto an, besteht wieder der volle Zugriff auf diese Dateien. Allerdings erfordert der Einsatz eines Cloud-Betriebssystems auch eine stetige Internetverbindung mit ausreichender Bandbreite. Da Jolicloud mittlerweile als eigenständige Anwendung realisiert wurde, ist es auch möglich, auf die eigenen Dateien ohne installiertes Joli OS zurückzugreifen &#8211; es muss nur ein HTML5-tauglicher Webbrowser vorhanden sein.</p>
<p>Besonders Netbooks mit nur geringer Speicherkapazität und Rechenleistung eignen sich sehr gut für den Einsatz eines Cloud-OS. Joli OS 1.2 verspricht beispielsweise den ruckelfreien Genuss von HD-Videos selbst mit Intels betagter CPU-Grafik der Atom-Prozessoren. Wer über eine schnelle und zuverlässige Internetverbindung verfügt freut sich also über ein flexibles System. Vor allem wenn häufig der Rechner zum Arbeiten gewechselt wird ist ein Cloud-Betriebssystem praktisch, da die gerade bearbeiteten Dateien nicht immer auf externen Datenträgern herumgetragen werden müssen sondern in der Cloud liegen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/03/28/linux-in-der-wolke-joli-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die eigene Startseite</title>
		<link>http://www.compufreak.info/2011/03/03/die-eigene-startseite/</link>
		<comments>http://www.compufreak.info/2011/03/03/die-eigene-startseite/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 20:33:34 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2244</guid>
		<description><![CDATA[Nach einem Monat Schweigen auf meinem Blog, möchte ich Euch nun darüber informieren, dass ich meine Arbeit keineswegs eingestellt habe. Vielmehr habe ich an einem kleinen Projekt gearbeitet, welches Ende diesen Monats online gehen soll. Dieser kleine Artikel soll nur kurz zeigen, was ich mache, damit niemand denkt, ich wäre faul Vor ein paar Wochen [...]]]></description>
			<content:encoded><![CDATA[<p>Nach einem Monat Schweigen auf meinem Blog, möchte ich Euch nun darüber informieren, dass ich meine Arbeit keineswegs eingestellt habe. Vielmehr habe ich an einem kleinen Projekt gearbeitet, welches Ende diesen Monats online gehen soll.<br />
Dieser kleine Artikel soll nur kurz zeigen, was ich mache, damit niemand denkt, ich wäre faul <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Vor ein paar Wochen bin ich auf raphaelg.cwsurf.de auf einen Blog-Artikel gestoßen, den ich sehr interessant fand. Dabei ging es darum, wie man sich seine eigene Startseite basteln könnte. Das Ergebnis sah sehr schick aus. Damals habe ich die Dateien, die er anbot ein wenig weiter ausgebaut. Nix dolles. Dann aber bin ich auf die Idee gekommen, dass es doch Sinn machen würde, dafür ein Online-Tool anzubieten. Schließlich haben die wenigsten Lust für eine personalisierte Startseite HTML und CSS zu lernen.<br />
Also habe ich mich hingesetzt und mal wieder angefangen von Hand zu programmieren. Von Grund auf. So entstand ein Online-Dienst, der es einem Laien möglichst einfach machen soll, sich online eine oder mehrere persönliche Startseiten zu erstellen. Dabei soll die Oberfläche werbefrei und sehr sehr simpel, aber effektiv gehalten werden. Jeder Benutzer soll sich kostenlos beliebig viele Startseiten anlegen dürfen. Auf jeder Startseite können Links und Widgets abgelegt werden.<br />
Dazu kommen noch einige coole Funktionen.<br />
Mehr verrate ich aber noch nicht. Ich gebe lediglich drei Screenshots raus. (Hinweis: Am Design wird sich vermutlich noch einiges ändern)</p>
<p><a href="http://www.compufreak.info/wp-content/uploads/2011/03/screenshot1.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/03/screenshot1-300x204.png" alt="" title="Screenshot 1" width="300" height="204" class="alignleft size-medium wp-image-2245 white-border" /></a><br />
<a href="http://www.compufreak.info/wp-content/uploads/2011/03/screenshot2.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/03/screenshot2-300x204.png" alt="" title="Screenshot 2" width="300" height="204" class="alignleft size-medium wp-image-2247 white-border" /></a><br />
<a href="http://www.compufreak.info/wp-content/uploads/2011/03/screenshot3.png"><img src="http://www.compufreak.info/wp-content/uploads/2011/03/screenshot3-300x204.png" alt="" title="Screenshot 3" width="300" height="204" class="alignleft size-medium wp-image-2248 white-border" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/03/03/die-eigene-startseite/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Hacker-Browsergames (Mini-Review)</title>
		<link>http://www.compufreak.info/2011/02/06/hacker-browsergames-mini-review/</link>
		<comments>http://www.compufreak.info/2011/02/06/hacker-browsergames-mini-review/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 09:17:54 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Spiele]]></category>
		<category><![CDATA[freak]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[spass]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2234</guid>
		<description><![CDATA[Wer wollte nicht schon mal das aufregende Leben eines Hackers führen? Den Geruch von Abenteuer, verschmorrten Kabeln und 5 Liter Kaffee in der Nase haben? Viel Geld verdienen und den staatlichen Ermittlern immer einen Schritt voraus sein? Den "Kollegen" zeigen, dass man einfach besser ist als sie?]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.compufreak.info/wp-content/uploads/2011/02/logo-300x70.png" alt="" title="HTN-Logo" width="300" height="70" class="alignright size-medium wp-image-2236 white-border" />Wer wollte nicht schon mal das aufregende Leben eines Hackers führen? Den Geruch von Abenteuer, verschmorrten Kabeln und 5 Liter Kaffee in der Nase haben? Viel Geld verdienen und den staatlichen Ermittlern immer einen Schritt voraus sein? Den &#8220;Kollegen&#8221; zeigen, dass man einfach besser ist als sie?</p>
<p>Wieviel Stuss habe ich in den letzten Sätzen untergebracht? <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Mit solch ähnlichen Sprüchen jedenfalls werben die verschiedenen Hacker-Browsergames. Ich habe 6 von ihnen ausprobiert. Weitere 4 konnte ich leider nicht testen, da sie entweder keine neu-Anmeldungen akzeptierten oder ihre Datenbank abgestürzt war. Von diesen 6 konnte ich 4 eigentlich direkt in &#8220;die Tonne kloppen&#8221;. Mal ganz abgesehen vom unübersichtlichen Design, fehlte es diesen Spielen eigentlich immer an ein wenig&#8230; Planung. Sie wurden nicht so sehr durchdacht. Der Einstieg ist sehr schwer zu finden und wenn man ihn gefunden hat, dann macht das Spiel dennoch nicht so viel Spaß wie erhofft. Lediglich zwei dieser (getesteten) Browsergames konnten mir gefallen. Zum einen ist da das Spiel <a href="http://www.hackthenet.org" target="_blank">HackTheNet (HTN)</a>, das andere heißt <a href="http://www.blacknet.me" target="_blank">blacknet.me</a>.</p>
<p><strong>Blacknet.me</strong></p>
<p>Dieses Spiel sieht graphisch nicht soooo ansprechend aus, ist inhaltlich aber cool gemacht. Es ist nichts für Einsteiger, da es schon ein wenig komplizierter ist als andere Spiele. So gibt es die Möglichkeit zu Scripten. Man kann sich über eine Console in die Accounts von anderen Spieler einhacken und denen dann ein eigenes Script hochladen. Um gehackte PCs und sich selbst zu schützen, muss man solche Scripts anpassen können. Das lässt sich aber alles über das Online-Handbuch lernen. Das Spiel ist etwas ungewöhnlich für dieses Genre, macht aber durchaus Spaß.</p>
<p><strong>HackTheNet</strong></p>
<p>Das wohl älteste, ausgereifteste und beste Hacker-Browsergames. Es ist auch für Leute mit nur wenig speziellem Hintergrundwissen spielbar. Ein paar Begriffe muss man sich zwar aneignen, aber da gibt es eigentlich ganz gute Hilfen.<br />
Wie bei eigentlich allen von diesen Hacker-Browsergames geht es darum, sich als Hacker ein möglichst &#8220;cooles&#8221; System aufzubauen. Dazu muss man andere Leute hacken und ihnen die Credits klauen oder sich selbst welche Verdienen. Mit diesen Credits kann man dann ( in-game! ) Hardware kaufen und die eigenen PCs aufrüsten kann. Natürlich muss man sich auch weiterbilden um besser zu werden. Es gibt viele Ausbaumöglichkeiten. Das Spiel ist abwechslungsreich und unterhaltsam. Ein besonderer Vorteil dieses Spiels ist es, dass es die Besucher nicht gleich durch blinkende Werbung oder ein total hässliches Design vertreibt. Es wird gut gewartet und von vielen Leute aktiv gespielt. Die Bedienung ist übersichtlich und wenn man die Zeit investiert und sich ein bisschen damit beschäftigt, dann macht es auch richtig Spaß.   </p>
<p><strong>Fazit</strong></p>
<p>Beide Spiele sind cool, HackTheNet ist meiner Meinung nach aber noch besser. Nicht zuletzt wegen der Grafik. Wer also mal so ein Spiel ausprobieren möchte, der sollte sich einen Account bei HackTheNet erstellen.<br />
Ich wünsche viel Vergnügen!</p>
<p>Zu <a href="http://www.hackthenet.org" target="_blank">HackTheNet (HTN)</a><br />
Zu <a href="http://www.blacknet.me" target="_blank">blacknet.me</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/02/06/hacker-browsergames-mini-review/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Parasit Bing</title>
		<link>http://www.compufreak.info/2011/02/01/parasit-bing/</link>
		<comments>http://www.compufreak.info/2011/02/01/parasit-bing/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 18:26:51 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[Sinnlos]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[betrug]]></category>
		<category><![CDATA[bing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2225</guid>
		<description><![CDATA[Das der Suchdienst Bing von Microsoft mal wieder ein größerer Flop war, lässt sich wohl nicht bestreiten. Es ist ein weiterer armseliger Versuch, einige Fehler, die man früher machte wieder auszubügeln. Beim Thema Suchanbieter hat Microsoft mal wieder den Trend verpasst. Ähnlich damals, als man meinte, dass sich JavaScript gegen das eigene Produkt JScript nicht durchsetzen könne. Solche Fehler sind Microsoft oft unterlaufen. Das schönste Beispiel ist wohl der Internet-Explorer. Dieser hat noch einiges nach zu holen.]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_2226" class="wp-caption alignright" style="width: 310px"><img src="http://www.compufreak.info/wp-content/uploads/2011/02/bing-logo-300x220.png" alt="" title="Bing" width="300" height="220" class="size-medium wp-image-2226 white-border" /><p class="wp-caption-text">Bing - © 2011 Microsoft</p></div><br />
Das der Suchdienst Bing von Microsoft mal wieder ein größerer Flop war, lässt sich wohl nicht bestreiten. Es ist ein weiterer armseliger Versuch, einige Fehler, die man früher machte wieder auszubügeln. Beim Thema Suchanbieter hat Microsoft mal wieder den Trend verpasst. Ähnlich damals, als man meinte, dass sich JavaScript gegen das eigene Produkt JScript nicht durchsetzen könne. Solche Fehler sind Microsoft oft unterlaufen. Das schönste Beispiel ist wohl der Internet-Explorer. Dieser hat noch einiges nach zu holen.</p>
<p>Wie verschiedene andere Dienste ist auch aus Bing nicht so wirklich was geworden. Das hat man wohl auch in Redmond bemerkt. Dass die Entwickler daraufhin aber so tief sinken würden, hätte ich nicht gedacht. Verschiedenen Berichten zufolge, hat Bing sozusagen die Suchergebnisse bei Google abgeschrieben. Google hegte diesen Verdacht wohl schon länger. Bewiesen wurde es allerdings durch eine Art Honeypot.<br />
Honeypots sind absichtlich verursachte, vermeintliche Sicherheitslücken, die verwendet werden, um Hackern und Crackern eine Falle zu stellen.<br />
In diesem speziellen Fall, habe Google den eigene Suchindex manipuliert und eine sinnlose Zeichenkette (&#8220;mbzrxpgjys&#8221;)auf die Seite von RIM verweisen lassen. Einige Tage später tauchte dieser Suchbegriff samt Link dann bei Bing auf. Ein ziemlich eindeutiger Beweis, oder?</p>
<p>Bing ist also tatsächlich so dreist und kopiert fremde Suchindexe. Nunja, ich habe mich schon immer über die Suchergebnisse Bings gewundert&#8230; </p>
<p>Mal wieder typisch Microsoft. Anstatt dass sie sich auf andere Sachen konzentrieren, die vielleicht wichtiger wären, machen die sowas <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/02/01/parasit-bing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wordle.net &#8211; Extravaganter Tag-Cloud Generator</title>
		<link>http://www.compufreak.info/2011/01/31/wordle-net-extravaganter-tag-cloud-generator/</link>
		<comments>http://www.compufreak.info/2011/01/31/wordle-net-extravaganter-tag-cloud-generator/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 17:50:16 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Online-Dienste]]></category>
		<category><![CDATA[dienst]]></category>
		<category><![CDATA[freak]]></category>
		<category><![CDATA[generieren]]></category>
		<category><![CDATA[Grafik]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[praktisch]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2212</guid>
		<description><![CDATA[Gelegentlich kommt es zu einer Situation in der man als Blogger eine Tag-Cloud benötigt. Wordpress und viele andere Systeme bieten hierfür eine eigene Funktion. Diese funktionieren ja soweit auch ganz gut, sind aber noch nicht so wirklich... graphisch... nun ja: ansprechend. In der Vergangenheit gab es ja viele Versuche solche Tag-Clouds in 3D und mit Bewegungen zu gestalten. Ich persönlich konnte diese Dinger nie wirklich leiden. 3D passt einfach nicht zum Web! Meine Meinung ;)]]></description>
			<content:encoded><![CDATA[<p>Gelegentlich kommt es zu einer Situation in der man als Blogger eine Tag-Cloud benötigt. WordPress und viele andere Systeme bieten hierfür eine eigene Funktion. Diese funktionieren ja soweit auch ganz gut, sind aber noch nicht so wirklich&#8230; graphisch&#8230; nun ja: ansprechend. In der Vergangenheit gab es ja viele Versuche solche Tag-Clouds in 3D und mit Bewegungen zu gestalten. Ich persönlich konnte diese Dinger nie wirklich leiden. 3D passt einfach nicht zum Web! Meine Meinung <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Jedenfalls ist es gar nicht so einfach, eine richtig coole Tag-Cloud zu generieren. An dieser Stelle kommt ein kostenloser Dienst namens <strong>Wordle</strong> ins Spiel.<br />
<a href="http://www.wordle.net/" target="_blank">Wordle.net</a> bietet umfangreiche Funktionen und Gestaltungsmöglichkeiten auf sehr aufgeräumter Oberfläche.<br />
Der Dienst bietet mehrere Funktionen. Zum einen kann ein beliebiger Text als Vorlage dienen. In diesem Fall werden erst normale Wörter der jeweiligen Sprache (wie zum Beispiel &#8220;und&#8221;, &#8220;er&#8221; oder &#8220;wie&#8221;) gefiltert. Dann wird eine Tag-Cloud aus den verbleibenden Wörtern erstellt, wobei sich die Häufigkeit natürlich auf die Schriftgröße auswirkt. Danach lässt sich die Tag-Cloud graphisch genauer gestalten. Es stehen verschiedene Schriften, Farb-Paletten und Anordnungsprinzipien (Hotizontal, Vertikal, Gemischt, etc.) bereit. Die fertige Grafik kann in eine öffentliche Gallerie gespeichert und auf anderen Websites eingebunden werden.</p>
<p>Das ganze System ist leicht zu bedienen und gleichzeitig sehr flexibel. So ist es auch möglich, anstelle eines Textes einfach direkt eine Liste mit Wörtern, deren Häufigkeiten und wahlweise sogar bestimmten Farben zu hinterlegen. </p>
<p><strong>Wofür kann man Wordle.net denn am besten verwenden?</strong></p>
<p>Natürlich kann es auf einem Blog Anwendung finden. Ich könnte jeden meiner Artikel dadurch jagen und dann die Tag-Cloud auf meiner Seite einbinden. Dummerweise ist das alles recht aufwändig. Praktischer ist es wohl daher eher für gelegentliche Anwendungsgebiete. So könnte man es in einem Referat oder Vortrag verwenden, oder ganz verschiedene Sachen daraus generieren, wie zum Beispiel die Reiseziele nach persönlicher &#8220;Dringlichkeit&#8221; ordnen, oder die Doktorarbeit mal als Tag-Cloud anzeigen lassen. Der Kreativität sind wie immer wenn es um den Sinn des Lebens oder um das jonglieren mit Wörtern geht, keine Grenzen gesetzt!</p>
<p><strong>Hier ein paar meiner Beispiele (Klicken zum Vergrößern):</strong></p>
<p>Das sind alle, mir bekannten Programmiersprachen ( Ich habe nicht gegoogelt, sonst wären es mehr <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ), nach Relevanz. Die Schriftgröße soll der &#8220;Wichtigkeit&#8221; entsprechen, aber ich fürchte, ich hatte keine Ahnung, wie wichtig manche Sprachen sind <img src='http://www.compufreak.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.wordle.net/show/wrdl/3069638/Programmiersprachen" title="Wordle: Programmiersprachen"><img src="http://www.wordle.net/thumb/wrdl/3069638/Programmiersprachen" alt="Wordle: Programmiersprachen" class="white-border" /></a></p>
<p>Dies ist das Ergebnis, jagt man mein 90-seitiges eBook durch <a href="http://www.wordle.net/" target="_blank">Wordle.net</a>:</p>
<p><a href="http://www.wordle.net/show/wrdl/3062921/Webdesign-Tutorial" title="Wordle: Webdesign-Tutorial"><img src="http://www.wordle.net/thumb/wrdl/3062921/Webdesign-Tutorial" alt="Wordle: Webdesign-Tutorial" class="white-border" /></a></p>
<p>Und das sind jetzt Programmier- oder Scriptsprachen, mit denen ich mich (wenigstens mal kurz) beschäftigt habe. Diesmal entspricht die Schriftgröße meines Wissenstands (nach Selbsteinschätzung):</p>
<p><a href="http://www.wordle.net/show/wrdl/3069667/%22Meine%22_Programmiersprachen" title="Wordle: &quot;Meine&quot; Programmiersprachen"><img src="http://www.wordle.net/thumb/wrdl/3069667/%22Meine%22_Programmiersprachen" alt="Wordle: &quot;Meine&quot; Programmiersprachen" class="white-border" /></a></p>
<p>Wenn ihr jetzt ein wenig damit rumspielt, dann speichert das Ergebnis doch in der Gallerie und schickt mir den Link als Kommentar. Wenn&#8217;s cool ist, dann setze ich es mit in diesen Eintrag!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/01/31/wordle-net-extravaganter-tag-cloud-generator/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Krieg im Internet</title>
		<link>http://www.compufreak.info/2011/01/29/krieg-im-internet/</link>
		<comments>http://www.compufreak.info/2011/01/29/krieg-im-internet/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 17:23:27 +0000</pubDate>
		<dc:creator>compufreak</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Cyberwar]]></category>
		<category><![CDATA[Datenschutz]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://www.compufreak.info/?p=2203</guid>
		<description><![CDATA[Täglich nutzen weltweit mehr als eine Milliarde Menschen das Internet. Wie wir alle wissen, ist es zu einem großen sozialen Treffpunkt und Informationszentrum herangewachsen. Natürlich gehen davon auch täglich neue Bedrohungen hervor. Die Nutzer müssen sich wappnen und auf der Hut sein. Kann es aber auch das Internet selbst bedroht sein? Stets gehen wir davon aus, dass das Internet eine Gefahr für uns darstellt. Was aber kann das Internet in einen Ausnahmezustand versetzen? Was passiert zum Beispiel im Internet, wenn es zu einem dritten Weltkrieg käme?]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.compufreak.info/wp-content/uploads/2011/01/1296320876_fortress.png" alt="" title="War" width="128" height="128" class="alignright size-full wp-image-2204" /><b><br />
Täglich nutzen weltweit mehr als eine Milliarde Menschen das Internet. Wie wir alle wissen, ist es zu einem großen sozialen Treffpunkt und Informationszentrum herangewachsen. Natürlich gehen davon auch täglich neue Bedrohungen hervor. Die Nutzer müssen sich wappnen und auf der Hut sein. Kann es aber auch das Internet selbst bedroht sein? Stets gehen wir davon aus, dass das Internet eine Gefahr für uns darstellt. Was aber kann das Internet in einen Ausnahmezustand versetzen? Was passiert zum Beispiel im Internet, wenn es zu einem dritten Weltkrieg käme?<span id="more-2203"></span><br />
Was würden die Regierungen unternehmen? Was würde sich in sozialen Netzwerken abspielen?<br />
Im Internet gibt es hierzu zahlreiche Theorien und achtungs-erheischende Vorträge. Ich möchte diese Fragen jetzt mal ganz ohne spezielles Vorwissen betrachten. Ich habe bisher keine Artikel dazu wirklich gelesen, sondern möchte nur meine eigenen Gedanken dazu darlegen.</b></p>
<p>Am interessantesten ist hierbei wohl die Frage: <strong>Wie würden sich die Regierungen verhalten?</strong><br />
Zwar hat man sich international mehr oder weniger darauf geeinigt für diesen Fall nicht aufzurüsten, ich denke aber schon, dass viele Staaten das insgeheim tun. Letztendlich ließe sich wohl nichts militärisches schneller zusammenstellen als eine Sondereinheit von Sicherheitsexperten. Die Regierungen müssten im Kriegsfall damit rechnen, über das Internet angegriffen zu werden. Daraus folgt, dass sie sich wenigstens auf diese Weise auch zu verteidigen wissen müssen. Wenn eine Regierung nun aber eine Einheit zur Verteidigung gegen Bedrohung über das Internet aufstellt, dann ist der Schritt in den Angriff auf umgekehrten Wege aber nicht mehr weit. Wie sehr würde sich ein Weltkrieg nun auf das Internet auswirken? Würden die Regierungen sich wirklich auf diese Weise bekämpfen? Angriffe auf militärische Systeme sind wahrscheinlich unausweichlich, aber wie sieht es mit privaten Zielen aus? Da es viele Angriffsmethoden gibt, hätten die Regierungen eine große Zielfläche. So könnte man neben staatlichen Systemen auch versuchen private Systeme möglichst großflächig zu kompromittieren. Dementsprechend wird auch die Frage nach dem Verhalten der Menschen aufgeworfen. Würden die Menschen sich gegen einen &#8220;Cyberwar&#8221; wehren? Oder ließe sich so vielleicht sogar ein ganzer Krieg verhindern? Schließlich wäre es Jedem möglich, über das Internet die ganze Situation aus der Sicht der Einwohner der gegnerischen Parteien zu betrachten. </p>
<p>Daraus ergibt sich die nächste wichtige Frage:<strong> Inwiefern würden die Regierungen das private Internet unbeeinträchtigt lassen?</strong> Würde jedes Land auf einmal eine Zensur ähnlich des goldenen Schilds Chinas einführen? Es ist durchaus denkbar, dass wir über das Internet keinen Zugriff mehr auf ausländische Seiten bekämen. Technisch ist das möglich. Allerdings ist es ebenso möglich, diese Zensur zu umgehen. Dummerweise wüssten viele Leute nicht wie es geht und diejenigen, die es wüssten, würden der Gefahr eines Verrats angeklagt zu werden wohl nicht entgehen. Zwar müssten die Grundgesetze solche Zensur zumindest in Deutschland unterbinden, ich könnte mir jedoch gut vorstellen, dass die Realität anders aussähe.</p>
<p>Ebenfalls interessant ist das Verhalten in sozialen Netzwerken. Vorausgesetzt, es käme keine Zensur zu Stande. Wie würde man sich Anderen gegenüber verhalten? <strong>Würden sich über das Internet nicht leicht Gruppen bilden, die gegen den Krieg sind? </strong><br />
&#8220;Krieg führen&#8221; &#8211; &#8220;Like!&#8221; &#8211; &#8220;Möchtest du dies über Twitter verbreiten?&#8221;<br />
Oder würden sich gar politische Lager bilden? Ich denke ja, dass sich die Leute weiterhin ganz gut verstehen würden. Unabhängig von der Nationalität. Nur, wenn der Staat es schaffen würde, die Illusion zu erzeugen, dass das eigene Land im Recht ist, wäre es möglich, dass die Nutzer sich auch im Web verabscheuen.</p>
<p>Neben diesen Themen steht auch die Frage, wie sich ein Weltkrieg auf die Kryptologie auswirken würde. Mit TrueCrypt, Blowfish und anderen könnte es dann noch richtig interessant werden. Die Hersteller dieser Systeme müssten sich für eine Partei entscheiden. Parteilos zu sein, könnte eine Gefahr darstellen. </p>
<p>Ist das Ausmaß eines Krieges in einem so komplexen System überhaupt prognostizierbar?<br />
Können wir uns überhaupt vorstellen, was passieren würde?</p>
<p>Haufenweise Fragen, von denen ich keine Einzige wirklich beantworten könnte. Ich hoffe einfach, dass es nie zu so etwas kommt. Allerdings denke ich auch nicht, dass ein Weltkrieg zur Zeit der Globalisierung und des Internets überhaupt möglich ist. Haben die einfachen Menschen nicht vielmehr Möglichkeiten Druck auf ihre Regierungen auszuüben? Wer will schon wirklich Krieg? Ein solches &#8220;Bedürfnis&#8221; müsste erst geweckt werden. Oder? :S</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compufreak.info/2011/01/29/krieg-im-internet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

