ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Archiv / [kein Bug] Img und Url


Seite 1 von 2 – nächste Seite >>

bdominik schrieb am 23.11.2002 um 10:22 Uhr

Hallo
habe gerade einen großen Bug entdeckt: in [ img] und in [ url] Tags werden keine relativen URLS mehr geparst. Siehe zum Beispiel hier
http://hacks.slware.com/tboard/showtopic.php?threadid=272

oder hier
http://web95.can05.de/dominik/thwb/showtopic.php?threadid=1464&pagenum=1

ICh wäre für ein schnelles Bugfix dankbar, weil ein großer Teil der Posts in meinem Forum diesen Fehler hat!

Superhausi schrieb am 23.11.2002 um 11:49 Uhr

Das Problem ist, dass mit diesem "BugFix" auch JavaScript wieder erlaubt ist. Wenn dir das aber egal ist, kannst du folgendes machen:
inc/thwbcode.inc.php, ~Zeile 273 (hab eigenen Erweiterungen in diesem File -> stimmt warscheinlich nicht):

        $string = preg_replace('/\[img\]([a-zA-Z]+):\/\/([^ ,\"\n]+)\.(jpg|jpeg|png|gif)\[\/img\]/Usi', '<img src="\1://\2.\3" alt="" border="0">', $string);


ändern in

$string = preg_replace('/\[img\]([^,\"\n]+)\[\/img\]/Usi', '<img src="\1" alt="" border="0">');


Das ganze gibt aber wieder eine ganze Menge Sicherheitslücken.

KhanRKerensky schrieb am 23.11.2002 um 12:00 Uhr

Eine inc/thwbcode.inc.php gibts in der normalen 2.8 nicht, Superhausi. :)

Aber das "\.(jpg|jpeg|png|gif)" kann er doch eigentlich dranlassen...

Superhausi schrieb am 23.11.2002 um 13:15 Uhr

Uups... Hab wohl in der dev-Version nachgeschaut... Müsste natürlich in der header.inc.php sein...

Jonas schrieb am 23.11.2002 um 13:50 Uhr

nein, functions.inc.php afaik ;)

bdominik schrieb am 23.11.2002 um 14:59 Uhr

nein, Superhausi, ich arbeite mit der CVS Version, von demher stimmen die Dateien schon!

bdominik schrieb am 23.11.2002 um 15:10 Uhr

Wäre natürlich nicht schlecht, wenn es eine möglichkeit gäbe, das ganze so zu schreiben, dass der Javascript-Bug nicht auftritt. Außerdem fehlt auch noch das Bugfix für [ url]

Superhausi schrieb am 23.11.2002 um 19:01 Uhr

Dort gehts genau gleicht... Ich nehme an, das kannst du auch selber :)
Aber:
Die CVS-Versionen sind NICHT für den produktiven Einsatz gedacht... Wart lieber auf die 2.81...

bdominik schrieb am 23.11.2002 um 21:12 Uhr

das weis ich sehr genau Superhausi! Aber ich bin bereit das Risiko einzugehen. Aber der Fehler ist ja in allen 2.8x Version (ob jetzt CVS oder nicht) vorhanden.
Und dein Glauben an mich ist ja gut und schön, nur das ich 0 Ahnung von preg_replaces habe, deshalb: schreibst du mir das? Bitte?

Danke

TO

bdominik schrieb am 24.11.2002 um 22:03 Uhr

Ach Superhausi, bitte hilf mir!

KhanRKerensky schrieb am 25.11.2002 um 00:13 Uhr

        $searches[13] = "/\[url\]([^ ,\"\n]+)\[\/url\]/Ui";
        $replaces[13] = '<a href="\1" target="_blank">\1</a>';



        $string = preg_replace('/\[img\]([^ ,\"\n]+)\.(jpg|jpeg|png|gif)\[\/img\]/Usi', '<img src="\1.\2" alt="" border="0">', $string);



Wo die hingehören bekommst wohl selbst hin, frapos?

bdominik schrieb am 25.11.2002 um 14:27 Uhr

klaro, danke Khan!

bdominik schrieb am 25.11.2002 um 14:39 Uhr

funzt leider nicht: bleibt beim alten!

KhanRKerensky schrieb am 25.11.2002 um 16:15 Uhr

Also bei mir lüfft das...

./templates/default/images/board.gif

Gibt bei mir eindeutig ein Bild aus... url das gleiche.

Hast die alten replaces ersetzt oder hast du die da oben hinzugefügt?

bdominik schrieb am 25.11.2002 um 19:46 Uhr

ich habe es oben angefügt!

KhanRKerensky schrieb am 26.11.2002 um 06:50 Uhr

Ersetz mal testweise die alten...

TheTinySteini schrieb am 26.11.2002 um 19:37 Uhr

Also eigentlich ist das kein Bug, sondern eher ein Feature. Mag zwar etwas lästig sein, aber verhindert wirkungsvoll XSS etc. Und was ist so schlimm daran, wirklich die gesamte URL angeben zu müssen? In den meisten Boards werden doch sowieso nur Bilder von anderen Seiten eingefügt.

bdominik schrieb am 26.11.2002 um 19:50 Uhr

wenn mir jemand ein Script schreib, dass in 200 Posts das ändert, gerne!

Superhausi schrieb am 27.11.2002 um 07:05 Uhr

include "./inc/header.inc.php";
$posts_r = thwb_query( "SELECT posttext, postid FROM ".$pref."post WHERE 1");
while( $post=mysql_fetch_array( $posts_r ) )
{
$str=$post['posttext'];
$str=str_replace( '[url]./', '[url]'.$config['boardurl'], $str );
$str=str_replace( '[url="./', '[url="'.$config['boardurl'], $str );
$str=str_replace( '[img]./', '[img]'.$config['boardurl'], $str );
thwb_query( "UPDATE ".$pref."post SET posttext='".addslashes($str)."' WHERE postid=$post[postid]" );
}


Sollte eigentlich so funktionieren...
WICHTIG: Vorher DB Backup machen, oder gleich mit einem backup testen. Übernehme keine Verantwortung, dass das Script wirklich nur das richtige macht.

bdominik schrieb am 27.11.2002 um 12:44 Uhr

ersetzt das nur realtive URLS oder alle?

Narodnaja schrieb am 27.11.2002 um 13:48 Uhr

es ersetzt alle, die mit einem ./ (Punkt und Slash) anfangen - URLs und Bilder. Theoretisch ;)

bdominik schrieb am 27.11.2002 um 13:50 Uhr

also gut, werde mal ein Backup machen und dann das Script testen!

Superhausi schrieb am 28.11.2002 um 09:25 Uhr

Und was soll das Theoretisch? *fg*

Narodnaja schrieb am 28.11.2002 um 10:58 Uhr

*g* ich habs ja nicht getestet :rolleyes: nachher bin ich noch an irgendwas schuld :D

Superhausi schrieb am 28.11.2002 um 11:42 Uhr

Er testet's ja nur an einem BackUp -> kann nix passieren... :)

Seite 1 von 2 – nächste Seite >>