Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

links zerstören

Eingetragen von monk77 (37)
am 24.09.2009 - 19:56 Uhr in
  • Module
  • Drupal 6.x

Ich habe ein ganz besonderes Anliegen:

Und zwar geht es darum, dass unregistrierte Besucher Beiräge verfassen können, die zum Teil automatisch an externe Seiten (z. B. Twitter) weitergeleitet werden. Jetzt ist mein Problem: Was ist, wenn ein User einen illegalen Link eingibt? Das könnte böse enden. Daher meine Frage:

Gibt es ein Modul oder irgendeine Möglichkeit, Links in Beiträgen generell zu zerstören oder gar zu entfernen. Ich habe es schon mit wordfilter probiert. Damit kann ich theoretisch http:// und www rausfiltern. Aber jeder halbwegs intelligente Mensch sieht anhand einer Wortzusammenstellung und den / dazwischen, dass dies mal ein Link gewesen ist und kann diesen natürlich leicht wieder rekonstruieren.

Grüße
monk77

‹ ecommerce mit userpoints? Mapping Kit - OpenStreetmap Karte mit Markern? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

monk77 schrieb Jetzt ist

Eingetragen von traxer (1009)
am 24.09.2009 - 21:17 Uhr
monk77 schrieb

Jetzt ist mein Problem: Was ist, wenn ein User einen illegalen Link eingibt? Das könnte böse enden.

Informiere dich über Forenhaftung. Soweit ich weiß bist du verpflichtet, solche Links zu entfernen sobald du davon Kenntnis erlangst. Soweit ich weiß bist du nicht verpflichtet, alle Inhalte die von Benutzern kommen, vorher zu begutachten.

monk77 schrieb

Gibt es ein Modul oder irgendeine Möglichkeit, Links in Beiträgen generell zu zerstören oder gar zu entfernen.

Ja. In den Einstellungen zu den Eingabeformaten (index.php?q=admin/settings/filters/list) kannst du die einzelnen Eingabeformate konfigurieren. In der Konfiguration des Eingabeformates (z.B. index.php?q=admin/settings/filters/1 für Filtered HTML) gibt einen URL-Filter, der URLs in Links umwandelt. Wenn du diesen Filter deaktivierst, dann werden URLs nicht mehr in Links umgewandelt.

Konsequenterweise solltest du dann in der Filterkonfiguration (z.B. index.php?q=admin/settings/filters/1/configure bei Filtered HTML) auch das <a>-Tag verbieten, da sonst Leute einfach <a href="http://www.example.com">Illegaler Link</a> bei dir eingeben könnten und das würde dann als Link dargestellt werden.

monk77 schrieb

Aber jeder halbwegs intelligente Mensch sieht anhand einer Wortzusammenstellung und den / dazwischen, dass dies mal ein Link gewesen ist und kann diesen natürlich leicht wieder rekonstruieren.

Das ist richtig. Ein Computer kann das aber nicht. Deshalb gibt es kein Modul, das nicht von Menschen ausgetrickst werden kann.

Beispiel:

  1. Zitat:

    Jeder der sich ein wenig mit Drupal beschäftigt hat, der weiß das es die besten Informationen auf drupal.org gibt.

    Wäre <a href="http://drupal.org">drupal.org</a> jetzt ein sogenannter illegaler Link, dann müsste drupal.org aus obigem Text enfernt werden.

  2. Zitat:

    die activex data objects sind in form von ado.net auch in das neuste flagschiff der windows-entwicklung eingezogen.

    Wäre <a href="http://ado.net">ado.net</a> jetzt ein sogenannter illegaler Link, dann müsste ado.net aus obigem Text enfernt werden. Allerdings geht es in dem Text überhaupt nicht um http://ado.net, sondern um http://msdn.microsoft.com/de-de/library/h43ks021.aspx.

In Anbetracht dessen was ich eingangs über Forenhaftung geschrieben habe, denke ich das du nicht so weit gehen musst und die oben beschriebenen Maßnahmen ausreichend sind.

--
XING

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

danke dir für deine

Eingetragen von monk77 (37)
am 24.09.2009 - 21:15 Uhr

danke dir für deine schnelle antwort.

zu der forenhaftung: ich hatte schon einige foren. :) deshalb ist mir das problem mit der haftung bewusst und genau aus diesem grund versuche ich alle möglichen risiken möglichst zu reduzieren.

da es kein modul gibt, welches links korrekt rausfiltert, frage ich anders:

gibt es ein modul, was generell alle beiträge herausfiltert, die einen link enthalten? sprich jeder beitrag mit einem link, wird als spam gewertet. in wordpress gibt es sowas im kommentarbereich. dort legt man einen maximalwert fest. ist dieser wert erreicht oder wird er überschritten, wird der kommentar als spam gefiltert und herausgenommen.

ich habe mir eben das spam-module angeschaut. aber leider gibt es auch da keien option, beiträge mit links generell herauszufiltern.

grüsse
monk77

  • Anmelden oder Registrieren um Kommentare zu schreiben

monk77 schrieb da es kein

Eingetragen von traxer (1009)
am 24.09.2009 - 22:17 Uhr
monk77 schrieb

da es kein modul gibt, welches links korrekt rausfiltert, ...

Anscheinend besteht ein Missverständnis darüber, was ein Link eigentlich ist. Deshalb hier mal zur Klährung:

  1. Das ist ein Link: http://www.drupalcenter.de/node/21648. Man erkennt einen Link daran, das man darauf klicken kann und der Browser dadurch eine neue Seite ansurft.
  2. Das ist kein Link: http://www.drupalcenter.de/node/21648. Das ist eine URL. Man erkennt eine URL daran, das sie ein Schema benennt, darauf folgt ein Doppelpunkt, und darauf folgt eine Zeichenkette, deren Bedeutung von dem verwendeten Schema abhängt.
  3. Das ist keines von beiden: www.drupalcenter.de/node/21648. Es ist weder ein Link (man kann nicht draufklicken), noch eine URL (es gibt keinen Doppelpunkt). Es ist für den Computer eine bedeutungslose Zeichenkette.

Was willst du jetzt?

  1. Wie du Links verhinderst habe ich in meinem ersten Beitrag beantwortet.
  2. Wie du URLs unterdrückst, hast du ja schon mit dem wordfilter-Modul herausgefunden.
  3. Das es zu Problemen führt, bedeutungslose Zeichenketten als URL aufzufassen, habe ich hoffentlich auch im Beispiel meines ersten Beitrags verdeutlicht.

--
XING

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

mir ist bewusst, was ein

Eingetragen von monk77 (37)
am 24.09.2009 - 22:59 Uhr

mir ist bewusst, was ein hyperlink ist!!! ich bastele schliesslich nicht erst seit gestern an webseiten herum. darum geht es doch hier auch garnicht. wir sind uns, denke ich mal, darüber einig, dass es keine funktion gibt, die es mir gestattet, einen einzelnen link aus einem beitrag zu entfernen. also muss ich andere wege gehen.

es gibt in wordpress eine funktion, die es mir als admin erlaubt, das system so einzustellen, dass jeder kommentar rausgeworfen wird, der einen link enthält. stichwort: spamschutz!

wordfilter kann dies eben nicht. mit wordfilter kann ich lediglich wordfetzen, bestandteile eines wortes oder eben auch ganze worte mit einem von mir definierten wort ersetzen (siehe erster beitrag).

ich suche nun nach einem modul, was den ganzen beitrag entfernt, sobald dieser einen einzigen link enthält. das spam modul kann dies nicht.

lange rede, kurzer sinn:

link im beitrag gefunden --> beitrag rausschmeissen

  • Anmelden oder Registrieren um Kommentare zu schreiben

monk77 schrieb link im

Eingetragen von traxer (1009)
am 25.09.2009 - 08:50 Uhr
monk77 schrieb

link im beitrag gefunden --> beitrag rausschmeissen

Ich habe wirklich keine Ahnung, warum du nicht einfach das Eingabeformat so konfigurierst, das überhaupt keine Links eingegeben werden können.

--
XING

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

ganz einfach, weil es damit

Eingetragen von monk77 (37)
am 25.09.2009 - 09:49 Uhr

ganz einfach, weil es damit nicht geht. lach

wenn ich das eingabeformat konfiguriere, erhalte ich lediglich den effekt, dass linkähnliche eingaben nicht mehr automatisch in links umgewandelt werden, dass bedeutet aber noch lange nicht, dass die komplette linkadresse, die eingegeben wurde, nicht innerhalb des beitrags erscheint. das tut sie logischerweise immer noch. sie ist halt nur nicht mehr anklickbar.

edit: wenn z. b. der "a"tag verboten ist, dann löscht drupal lediglich diesen tag. der eigentliche inhalt (sprich die linksadresse) wird aber immer noch innerhalb des beitrags aufgeführt.

ich suche aus diesem grunde nach etwas, dass jeden beitrag, der einen link enthalten könnte, löscht oder garnicht erst veröffentlichen lässt. eine andere möglichkeit wäre, dass der link einfach umgewandelt wird zu einem anderen link. ich hatte mal eine chatsoftware, die alle links in http://www.google.com umwandelte. sowas wäre natürlich auch denkbar.

  • Anmelden oder Registrieren um Kommentare zu schreiben

eigener Filter

Eingetragen von stBorchert (6003)
am 25.09.2009 - 10:00 Uhr

Da es soetwas anscheinend nicht gibt, bau Dir doch einen eigenen Filter, der genau Deine Anforderung erfüllt.
Dazu verwendest Du das Modul Custom filter und erstellst (wie im Handbuch beschrieben) Deinen Link-Filter.

hth,

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

danke für deinen tip. das

Eingetragen von monk77 (37)
am 25.09.2009 - 11:06 Uhr

danke für deinen tip. das scheint ein interessantes modul zu sein. leider bin ich kein programmierer und habe von php nicht sehr viel ahnung. ich weiss nicht, wie ich so einen filter erstellen soll, der mir jeden link umwandelt. ich habe sowas ähnliches mal innerhalb von phpbb gesehen. preg replace, wenn ich mich nicht irre. da wird mit variablen gearbeitet.

hat jemand einen tipp, wie so eine code-zeile ausschauen könnte?

edit:

theoretisch müsste es doch so gehen. ich stelle alles wieder so ein, dass das system automatisch einen link erkennt und ihn in die passenden tags packt. dann muss ich nur noch mit custom filter eine einzige regel erstellen, die alles, was sich innerhalb eines a tags befindet, in eine von mir angegebene link adresse verwandelt.

problem ist nur, wie muss eine solche regel ausschauen?

pattern:
?

replacement text:
http://www.google.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

replace

Eingetragen von stBorchert (6003)
am 25.09.2009 - 11:29 Uhr

<?php
function replace_links($input) {
  if (
strpos($input, '</a>') === FALSE) {
    return
$input;
  }
 
$pattern = '/(<a href=\")(.+?)(\")(\s*)(>)(.+?)(<\/a>)/';
 
$replace = t('[link removed]');
 
$result = preg_replace($pattern, $replace, $input);
  return
replace_links($result);
}
?>

hth,

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

danke für deine antwort.

Eingetragen von monk77 (37)
am 25.09.2009 - 12:32 Uhr

danke für deine antwort.

der von dir gepostete code soll sehr wahrscheinlich alle möglichen links innerhalb eines beitrags entfernen. das funktioniert aber leider nicht. das system gibt nach wie vor jeden einzelnen link aus. ich gehe davon aus, dass das feld "replacement text" leerbleiben soll. oder muss ich gar deinen code-schnipsel in das feld replacement eintragen und das kästchen "php" markieren /patter leerlassen? ich habe jedenfalls beides versucht, mit dem ergebnis, dass das alle links nach wie vor ausgegeben werden. kann es vielleicht an der reihenfolge der filter liegen?

meine reihenfolge ist derzeit:

1.URL-Filter
2.Custom filter #1 (Filter #1)
3.HTML-Filter
4.HTML-Korrektor
5.Zeilenumbruchkonverter

wenn das so nicht funktionieren sollte, bin ich auch damit zufrieden, dass alle links in einen festen (von mir definierten) link umgewandelt werden.

grüsse
monk77

edit:

ich habe jetzt den php code in das feld "pattern" eingetragen und in das feld "replacement text" http://www.google.de

es wird weiterhin kein link umgewandelt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

doch, es funktioniert.

Eingetragen von monk77 (37)
am 25.09.2009 - 13:14 Uhr

und noch ein problem!

alle beiträge, die die seite verlassen - zum beispiel nach twitter - gehen, enthalten die original-links. es ist zum ins keyboard beissen.

jetzt bin ich soweit:

die links werden zwar entfernt, aber es kommt zu einer fehlermeldung:

warning: preg_replace_callback() [function.preg-replace-callback]: Compilation failed: nothing to repeat at offset 0 in C:\xampp\htdocs\test\sites\all\modules\customfilter\customfilter.module on line 80.

  • Anmelden oder Registrieren um Kommentare zu schreiben

monk77

Eingetragen von traxer (1009)
am 26.09.2009 - 08:42 Uhr
monk77 schrieb

1.URL-Filter
2.Custom filter #1 (Filter #1)
3.HTML-Filter
4.HTML-Korrektor
5.Zeilenumbruchkonverter

Der Custom filter #1 (Filter #1) gehört hinter den HTML-Korrektor, da er auf korrektes HTML angewiesen ist. Wenn der HTML-Filter vor dem Custom filter #1 (Filter #1) steht, dann muss dort der <a>-Tag erlaubt sein.

monk77 schrieb

doch, es funktioniert.

Nein, tut's nicht. Manchmal wird zu wenig entfernt:

<a class="fake" href="http://www.example.com">Illegaler Link</a>

Manchmal wird zu viel entfernt:

<a href="http://www.example.com">Link1</a> und auch <a href="http://www.example.com">Link2</a> sind illegal.

monk77 schrieb

alle beiträge, die die seite verlassen - zum beispiel nach twitter - gehen, enthalten die original-links.

Wenn es beim Anzeigen des Beitrags auf deiner Seite funktioniert, aber beim raussenden des Beitrags nicht, dann ist das meiner Meinung nach ein Bug in dem Modul, das die Beiträge raussendet. Das Modul beachtet dann das Eingabeformat nicht.

--
XING

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

danke die für deine hilfe.

Eingetragen von monk77 (37)
am 26.09.2009 - 08:58 Uhr

danke die für deine hilfe. ich werde das nach dem frühstück nochmal ausgiebig testen und werde hier von meinen weiteren abenteuern berichten :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Content Ex-/Import
  • Wer ist online Block
  • Doppelte Anzeige von Node im View
  • URL-Alias von bestehendem Link wird gelöscht und auf -0 gesetzt 404 Fehler entsteht
  • Ausblenden von Taxonomy wenn diese keinen Inhalt haben
  • Image als Anhang
  • [gelöst] Benutzer erstellen ohne Berechtigung zum ändern von E-Mail oder Passwort
  • HTTP ERROR 500, wenn der Node eines bestimmten Typs gespeichert wird oder ein neuer Inhalt dieses Typs erzeugt werden soll
  • Module modifizieren zb Statuses
  • Exposed Filter einer View in seperatem Block darstellen, wie kann ich die exposed Filter der zug. View deaktivieren
  • Website ohne öffentlichen Zugriff
  • »Geschwister« Nodes anzeigen
Weiter

Neue Kommentare

  • Ohne Fehlermeldungen zu
    vor 4 Stunden 48 Minuten
  • dinmikkith schrieb Ja du hast
    vor 2 Tagen 19 Stunden
  • SaarlandToday schrieb Es gibt
    vor 3 Tagen 3 Stunden
  • ich hab das Problem gefunden!
    vor 3 Tagen 4 Stunden
  • Sorry, das mit dem Theme war
    vor 3 Tagen 4 Stunden
  • Zitat: Es gibt in den
    vor 3 Tagen 5 Stunden
  • Es gibt in dem Template das
    vor 3 Tagen 15 Stunden
  • Zitat: da es dort eine
    vor 3 Tagen 16 Stunden
  • Sorry, dachte das ich das
    vor 3 Tagen 18 Stunden
  • Ich habe den Fehler gemacht
    vor 3 Tagen 19 Stunden

Statistik

Beiträge im Forum: 245940
Registrierte User: 18824

Neue User:

  • Damian1802
  • MrWebMV
  • kiba

» Alle User anzeigen

User nach Punkten sortiert:
wla9007
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3829
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 12 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association