Der Martin hat heute einen Post über Webspam veröffentlich und das Google eben nocht nicht allen Spam erkennen kann. Nun hat der Martin das schon sehr richtig erkannt, dass der Code via Kommentar eingeschleust wird und für den Seitenbetreiber nicht zu sehen ist.
Ich bin ca. 20 Links durchgegangen und kann so sagen, dass diese alle auf Drupal aufbauen. So wie der Martin schon schön beschrieben hat, wird eine ID aufgerufen und eine CSS-Klasse. Es handelt sich jedoch so wie ich das sehe nicht um einen Software-Bug sondern einfach um eine Funktion von Drupal um „Clean-URLs“ zu erzeugen.
Siehe Drupal Code:
$form['server_settings']['clean_url'] = array( '#type' => 'radios', '#title' => st('Clean URLs'), '#default_value' => 0, '#options' => array(0 => st('Disabled'), 1 => st('Enabled')), '#description' => st('This option makes Drupal emit "clean" URLs (i.e. without <code>?q=</code> in the URL).'), '#disabled' => TRUE, '#prefix' => '<div id="clean-url" class="install">', '#suffix' => '</div>', '#weight' => 10,
Leider wird genau diese ausgenutzt, um für den Seitenbetreiber unsichtbare URLs zu erzeugen. Bei WordPress ist es so, dass jeglicher PHP- und HTML-Code sofort umgewandelt wird. Mit dem speziellen Aufruf dieser Klasse wird das in Drupal scheinbar umgangen und die URL nicht angezeigt sondern versteckt.
Ein weiterer Fehler der ausgenutzt wurde, findet sich im Modul Image Assist von Drupal. Hier wird der HTML-Code einfach versteckt mit dem Type “hidden”
Siehe Drupal Code:
<?php function img_assist_insert_html_form() { $htmlcode = img_assist_set_htmlcode(); $form[] = array( '#id' => 'finalhtmlcode', '#type' => 'hidden', '#value' => $htmlcode, ); $form['insertmode'] = array( '#type' => 'hidden', '#value' => 'html2', ); return $form; } ?>
Ruft man also die Klasse folgendermaßen auf:
<p id="finalhtmlcode"> Casino: There are many gambling sites out there that claim to be the best online casino available but the truth of the matter is that this is the one with the biggest <a href="http://handyblog.org" rel="nofollow">online casino</a> bonuses and the highest casino payouts. </p>
Wird der komplette Text und Code nach “finalhtmlcode” versteckt und nicht angezeigt. Für den Google Bot sind diese Links natürlich klar vorhanden und zählen auch! Das mit dem guten Ranking kann mich nur so erklären, dass man schon drauf Acht gegeben hat nicht zu viele DoFollow Links zu generieren sondern es hat organisch aussehen lassen. Zudem sind da ein paar Seiten dabei, die echt Trust haben wie opensource.com.
Ich bin kein Programmiere möchte ich hier noch erwähnen und das sollte nur eine kleine Analyse sein.
{ 7 comments… read them below or add one }
Quick & Dirty lässt sich Deine kleine Analyse für aktivierte Clean-URLs bestätigen.
Ein Blick in “system.css” einer Drupal-Installation mit aktivierten Clean-URLs bringt “display:none” für “#clean-url.install” zum Vorschein und an dieser Stelle lässt sich der Ansatz zum Verstecken finden.
Mit den Kenntnissen über die unterschiedlichen Eingabeformate einer Drupal-Installation kann man auf die Hilfe des System-CSS setzen, um Eingaben zu verstecken. Gäste können i.d.R. nur gefiltertes HTML nutzen, in dem eine Handvoll HTML-Ausgaben, wie z.B. , oder , möglich sind. Registrierten Nutzern steht als Eingabeformat zusätzlich “Full HTML” zur Verfügung, sie können also alles nutzen und dementsprechend auch divs einbauen, die via css versteckt werden. Von diesem Ansatz aus müsste man als Drupaler schauen, ob die versteckten Links von registrierten Benutzern gesetzt wurden, wie im Beispiel von Martin, oder ob die Möglichkeit auch für Gäste besteht.
Vielen Dank für eine kleine Teststrecke zum Frühstück
Danke Torsten dafür. Ich wollte mir jetzt nicht extra Drupal herunterladen und die CSS-Style durchsuchen. Ist also so wie ich beschrieben habe. Es ist somit eben kein Bug sondern eine Funktion die durch aufrufen der Klasse ausgenutzt wird um einen Links zu verstecken. Okay diese kleine Hürde mit der Anmeldung ist ja für viele schnelle erledigt. Warscheinlich spammen jetzt schon einige los….
Ist auf jeden Fall verlockend. Aber auf Dauer wird es sicherlich nicht gut gehen. Echte Links überleben auf Dauer und verbessern die Rankings nachhaltig. Das gespamme wird jetzt bestimmt losgehen.
Die Anmeldung ist wirklich die kleinste Hürde und sofern der Seitenbetreiber die Standardeinstellungen nicht geändert hat, steht einem HTML in vollem Umfang offen.
Ich schätze allerdings mal, dass einige an die Standardeinstellungen Hand angelegt haben, da die einfache Unterscheidung zwischen Gast und Angemeldeter Benutzer doch etwas sehr breit gefächert ist.
Ansonsten habt ihr sicher recht, der eine oder andere ist mittlerweile sicher auf der Suche nach Drupalseiten, auf denen er sich getreu dem Motto “Link ist erstmal Link” verewigen kann.
Ich kenne Drupal nicht genau, aber wenn so etwas bei den Standardeinstellung aktiv ist, dann stimmt da was mit dem Rechtesystem überhaupt nicht. Wieso sollte ich einem Registrierten User erlauben komplette HTML im vollen Umfang ausführen zu können. Finde ich doch etwas bedenklich. Nun ja alle weiteren Seiten die ich gescheckt habe sind ebenfalls Drupal.
Mea culpa, in der Testumgebung war es auf aktiv gesetzt, regulär steht volles HTML zwar als Eingabeformat zur Verfügung, ist aber keiner Rolle zugeordnet.
Deine Tests kann ich auf alle Fälle bestätigen, volles HTML vorausgesetzt, lassen sich Inhalte ohne Probleme verstecken.
Warum man nun einem “einfachen” registrierten Benutzer erlaubt komplettes HTML auszuführen ist natürlich die Frage die bleibt. Eine Vermutung wäre, dass die Seitenbetreiber sich nicht weiter mit den Rollen beschäftigen und alle angemeldeten Besucher in die eine vorhandene Gruppe stecken. In der Gruppe hängen dann evtl. auch die Redakteure, denen man HTML-Rechte eingeräumt hat, und schon hat man den Salat.
Ja so sieht das für mich im Moment auch aus. Ich denke hier sollte jeder Seitenbetreiber sich Gedanken über die Rollen machen. Schließlich sollte man einen “einfachen” registrierten Benutzer kein volles HTML zur Verfügung stehen. Wenn man sich mit den rechten auskennt sollte das eigentlich leicht zu beheben sein meine ich. Bei Wordpress habe ich bisher nichts dergeleichen gefunden.