Seite 1 von 2

Schwerwiegende Bugs

Verfasst: 27.08.2008 12:08
von dieter99
Hallo miteinander!
Ich möchte in Kürze mein phpBB 2.x Board gegen phpBB 3.0.2 ersetzen. Zu Testzwecken und wegen der Templateanpassung läuft die neue Version vorerst lokal auf meinem Rechner.

Beim testen habe ich heute morgen nun zufällig entdeckt, dass beim löschen eines Beitrags das gesamte Thema gelöscht wird.
Ich habe dann sofort auf phpbb.de nach einer Lösung gesucht. Dabei bin ich auch fündig geworden:
manjo hat geschrieben:Hallo!

Da es offensichtlich ein Bug in mysql ist und nicht jeder in der Lage ist, seinen Provider dazu zu bewegen, eine neue Version einzuspielen, hier ein Workaround:

öffne include/functions_admin.php
finde in der Nähe von Zeile 720

Code: Alles auswählen

	// Remove topics now having no posts?
	if (sizeof($topic_ids))
	{
		$sql = 'SELECT topic_id
			FROM ' . POSTS_TABLE . '
			WHERE ' . $db->sql_in_set('topic_id', $topic_ids) . '
			GROUP BY topic_id';
		$result = $db->sql_query($sql);
und ersetzte ihn durch

Code: Alles auswählen

	// Remove topics now having no posts?
	if (sizeof($topic_ids))
	{
		$sql = 'SELECT topic_id,post_id
			FROM ' . POSTS_TABLE . '
			WHERE ' . $db->sql_in_set('topic_id', $topic_ids) . '
			GROUP BY topic_id';
		$result = $db->sql_query($sql);
speichern.

Bei mir hats funktioniert so.

Viele Grüße
Manjo
Die Anpassung des Codes hat das Problem tatsächlich gelöst.

Wenn ich den Fehler beim testen nicht zufällig bemerkt hätte und das neue Board irgendwann online gewesen wäre, dann hätte der Fehler schwerwiegende Folgen gehabt. Jeder User, der einen seiner eigenen Beiträge löscht, hätte jedes Mal das komplette Thema vernichtet.

Mir stellt sich nun die Frage, wie die Entwickler/Beitreiber von phpBB mit einer solchen Problematik umgehen. Der beschriebene Fehler soll kein echter Bug sein, sondern eher ein mySQL-Problem.

Setzen die Entwickler nun einfach voraus das jeder die aktuellste mySQL Version installiert hat (bei mir läuft lokal mySQL 5.0.15), oder will man den entsprechenden php-Code mit der phpBB-Version 3.0.3 korigieren?
Egal welcher Fall nun zutrifft: es muss das Ziel aller Beteiligten sein das ein Anwender vor der Live-Inbetriebnahme seines Boards auf solche schwerwiegenden Fehler hingewiesen wird.
Sicherlich gibt es irgendwo eine Bug-Liste. Die Frage ist nur, ob dieser Fehler als "Bug" gesehen wird, dort eingestellt ist und beseitigt wird. Außerdem: ließt jeder Nutzer regelmäßig die Bugliste?

Vielleicht sollte man im ACP eine Übersichtsliste schaffen wo auf schwerwiegende Fehler hingewiesen wird. Das wäre doch ein Verbesserungsvorschlag?

Verfasst: 27.08.2008 12:53
von kellanved
Hallo,
sicher ist dieses Problem besonders ärgerlich, aber leider ist es nur schwerlich möglich Nutzer auf solche Probleme hinzuweisen.

Gerade bei MySQL stellen sich dazu mehrere Schwierigkeiten. Zum einen ist es bisher nicht gelungen die betroffenen Versionen einzuschränken, zum Anderen verwenden viele Hoster selbstgebaute Versionen, die in kein Schema reinpassen. 3.0.3 wird etwas klüger beim Herausfinden der installierten MySQL Version sein, aber der PHP Code ist sicherlich nicht der Ort um MySQL Bugs zu handhaben.

Grundsätzlich muss man sich darauf verlassen können, dass Serverbetreiber ihre Software auf dem neuesten Stand halten. Die besten Sicherheitsvorkehrungen bringen nichts, wenn Angreifer Lücken in PHP/MySQL/Apache/OS ausnutzen können. Würde man versuchen Nutzer vor der Verwendung problematischer Software abhalten, müsste sogar für jeden IE(6) Nutzer ein warnendes Popup erscheinen.

Verfasst: 27.08.2008 13:22
von dieter99
Bei der Installation des Boards auf lokaler Ebene (XAMPP mit mySQL 5.0.15) hat die Installationsroutine nicht gemeckert. Also gehe ich davon aus das die mySQL Version ausreichend ist.
Entweder muss man die Installationsroutine anpassen (damit nur noch die aktuellste mySQL Version zugelassen wird), oder man nimmt beim programmieren wirklich nur Code der auch 100prozentig funktioniert. Der Codeschnipsel von Manja hat ja gezeigt das es auch anders geht.
Wie schon geschildert hätte der beschriebene Fehler verherrende Folgen haben können, hätte ich den Fehler nicht zufällig entdeckt. Genauso gut können noch viele andere schwerwiegende Fehler bestehen die vielleicht beim normalen benutzen des Boards nicht auffallen aber gravierende Sicherheitslücken für Hacker darstellen können. Wenn dann irgendwan jemand eine solche Sicherheitslücke entdeckt dann sollte JEDER Betreiber eines Boards darüber informiert werden (mein Vorschlag: Hinweisliste im ACP - nur schwerwiegende Fälle). Wenn die Sicherheitslücke "nur" ein BUG ist dann wird dieser BUG mit der neuen Version behoben. Ich meine speziell die Fehler, die nicht als BUG "anerkannt" werden sondern z.B. als mySQL-Problem gesehen werden.

Verfasst: 27.08.2008 13:56
von bantu
Prinzipiell sollte jede Software auf dem aktuellen Stand sein. Beim Server ist das eben Aufgabe des Betreibers, beim Browser Aufgabe des Kunden. phpBB zeigt im Administrations-Bereich an, wenn es nicht auf dem neusten Stand ist (sofern es PHP erlaubt). Des weiteren gibt es die Möglichkeit sich in die verschiedenen Mailinglisten einzutragen (Release, QA-Release, Commits).

Wenn ich meiner Datenbank sage bestimmte Einträge zu löschen (bzw. auszuwählen) und sie dann dennoch andere Einträge löscht, dann ist das doch definitiv ein Problem meiner Datenbank und nicht Problem meines Programmes/Skripts.

phpBB schützt den Anwender in vielen Punkten vor Problemen in anderer Software. Als Beispiele wären hier IE und JVM genannt. Wie kellanved schon sagte, gibt es in diesem Fall eben (noch) keine Möglichkeit genau herauszufinden unter welchen Umständen das Problem auftritt. Die angegebene Änderung der SQL-Abfrage sieht mir nicht wirklich SQL-korrekt aus und wird auf anderen Datenbanksystem (phpBB unterstützt nicht nur mySQL) vermutlich überhaupt nicht laufen. Deshalb wird es eine derartige Änderung im phpBB-Code wohl nicht geben.

Ich würde mir an deiner Stelle eher Gedanken darüber machen, ob ich mir den richtigen Hosting-Provider rausgesucht habe (sollte das Problem dort auch auftreten). Dein XAMPP sieht übrigens auch nicht nach neuestem Stand aus.

Gruß,
bantu.

Verfasst: 27.08.2008 14:08
von Mahony
Hallo
Ein verantwortungsvoller Administrator schaut sich immer wieder mal die Bugliste (Bug tracker) an. Alles andere wäre nicht sehr sinnvoll, da eine Anzeige für alle Benutzer im ACP leider technisch nicht immer möglich ist (wenn die entsprechende Funktion auf dem Server zum Beispiel deaktiviert wurde).
Im übrigen gibt es wohl keine absolut fehlerfreie Software.
Software, Betriebssystem, Mysql Version, PHP Version, Serverkonfiguration u.s.w. haben natürlich ebenfalls Einfluss auf die Sicherheit eines Systems. Sicherheit ist nun einmal kein statischer Zustand.
Entweder muss man die Installationsroutine anpassen (damit nur noch die aktuellste mySQL Version zugelassen wird), oder man nimmt beim programmieren wirklich nur Code der auch 100prozentig funktioniert. Der Codeschnipsel von Manja hat ja gezeigt das es auch anders geht.
Ich nehme mal an, der Fehler trat beim testen auf aktuellen SQL Standardversionen überhaupt nicht auf. Ansonsten hätte man ja dann schon reagiert. Allerdings kann selbst der beste Programmierer nicht alle Eventualitäten vorausschauend abfangen. Wie kellanved ja schon schrieb, setzen manche Hoster ja selbstgebaute Versionen ein und dort auftretende Fehler kann man einfach nicht vorher berücksichtigen.

Genauso gut können noch viele andere schwerwiegende Fehler bestehen die vielleicht beim normalen benutzen des Boards nicht auffallen aber gravierende Sicherheitslücken für Hacker darstellen können.
Hm..wenn man das immer schon vorher wüsste, dann käme es ja überhaupt nicht erst zu solchen Fehlern.
Wenn dann irgendwan jemand eine solche Sicherheitslücke entdeckt dann sollte JEDER Betreiber eines Boards darüber informiert werden
Dafür gibt es dann ja die Updates. Wenn eine solche Sicherheitslücke tatsächlich gefunden wird, reagieren die Entwickler von phpBB recht schnell und stellen entsprechende Updates zur Verfügung.

Ich meine speziell die Fehler, die nicht als BUG "anerkannt" werden sondern z.B. als mySQL-Problem gesehen werden.
Ein mysql Problem ist ein mysql Problem ist ein mysql Problem.




Grüße: Mahony

Verfasst: 27.08.2008 16:30
von dieter99
Ich bin mir sicher das sehr viele Administratoren nicht immer die aktuellste mySQL Version installiert haben. Warum auch updaten, denn wie heißt es so schön: "never change a running system".
Und wenn ein Admin bei der Installation des phpBB Boards keine Fehler entdeckt, dann wird ihm auch nichts bewegen sein mySQL upzudaten (bzw. updaten zu lassen).
Speziell diese Admins haben dann ein Board mit schwerwiegenden Mängeln/Fehlern. Das schlimme daran ist das siese Admins nicht wissen das es diese Fehler gibt, außer sie lesen zufällig diese Beiträge oder entdecken den Fehler zufällig bei der Benutzung. Selbst wenn die Bugliste regelmäßig gelesen wird dann hilft das in diesen Fall nicht, da es sich hier um keinen Bug handelt.
Ich bin nach wie vor der Meinung das es eine Seite geben sollte wo solche wichtige Informationen zentral gespeichert werden. Diese kann man dann z.B. auch über das ACP aufrufen.

Ich habe den Fehler zufällig entdeckt und kann jetzt entsprechend reagieren (d.h. Update von mySQL). Wenn ich aber vom Fehler nichts weiss, dann kann ich auch nicht reagieren! Versteht ihr jetzt, worauf ich hinaus will?

Verfasst: 27.08.2008 16:41
von Metzle
dieter99 hat geschrieben:Ich bin mir sicher das sehr viele Administratoren nicht immer die aktuellste mySQL Version installiert haben. Warum auch updaten, denn wie heißt es so schön: "never change a running system".
Dann bist du noch mit Windows 98 unterwegs? ;) Sorry, aber das ist für mich nicht gerade die richtige Einstellung ;) Um ein System aktuell und sicher zu halten sind nunmal Updates auf die neusten Versionen nötig. Natürlich nur auf Stable Versions, meine ich damit.

Egal welches Programm man zur Hand nimmt, es wird doch immer auf neuste Versionen entwickelt. Warum sollte ich ein Programm entwickeln, das auf alten Versionen basiert, die vielleicht nicht mal mehr sicher sind?

Verfasst: 27.08.2008 16:52
von bantu
Warum auch updaten, denn wie heißt es so schön: "never change a running system".
Sorry, aber das funktioniert in der heutigen Zeit einfach nicht (mehr).

Verfasst: 27.08.2008 17:06
von Boecki91
Was bringt es wenn angezeigt wird Bug bei xy

http://www.phpbb.com/bugs/phpbb3/
http://bugs.mysql.com/search.php?search ... &bug_age=0

Was soll ein Admin damit bitte anfangen?
Selbst reparieren?
Updaten? (Wieso läuft doch -> Never touch ...)?

Du kannst deinen Text übrigends genauso umdichten wenn du phpBB durch mySQL und umgekehrt ersetzt ;)

Beides kann Bugs enthalten und schwerwiegende Fehler beinhalten, deshalb ist es generell notwendig ein möglichst aktuelle System zu haben.

Verfasst: 27.08.2008 17:08
von dieter99
Metzle hat geschrieben:Egal welches Programm man zur Hand nimmt, es wird doch immer auf neuste Versionen entwickelt. Warum sollte ich ein Programm entwickeln, das auf alten Versionen basiert, die vielleicht nicht mal mehr sicher sind?
Dann sollte die Installationsroutine so programmiert werden das nur mySQL 5.0.5 oder höher unterstützt werden.
Es kann nicht sein das die Installationsroutine die mySQL Version 5.0.15 zulässt, obwohl mit dieser Version schwerwiegende Fehler auftreten. Da beist sich die Katze in den Schwanz!

Außerdem geht es mir darum, dass man wichtige Infos (die nicht in die Bugliste gehören) irgendwo anders zentral festhält.