links zerstören
am 24.09.2009 - 19:56 Uhr in
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
- Anmelden oder Registrieren um Kommentare zu schreiben
monk77 schrieb Jetzt ist
am 24.09.2009 - 21:17 Uhr
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.
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.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:
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.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.
--
danke dir für deine
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
monk77 schrieb da es kein
am 24.09.2009 - 22:17 Uhr
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:
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.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?
--
mir ist bewusst, was ein
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
monk77 schrieb link im
am 25.09.2009 - 08:50 Uhr
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.
--
ganz einfach, weil es damit
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.
eigener Filter
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.
danke für deinen tip. das
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
replace
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.
danke für deine antwort.
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.
doch, es funktioniert.
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.
monk77
am 26.09.2009 - 08:42 Uhr
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.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.
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.
--
danke die für deine hilfe.
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 :)