[FINAL] Auswahl anzuzeigender Foren

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

DanielHeinrich hat geschrieben:
Dave hat geschrieben: Was du noch ändern könntest wären deine sql querys nach der Coding Guide: http://wiki.phpbb.com/Database_Abstract ... #sql_query
Mhh... Ich denke ich kann das gerne nochmal überarbeiten - wobei mich dieser Guide doch ein bischen verwirrt hat da selbst die Autoren des Forums sich nicht immer daran halten.
Leider. Aber nur weil alle von ner Brücke springen heißt es ja nicht das wir auch mit machen müßen. Das Problem das es irgendwie überall in phpBB anders gemacht wird is schon da. Aber du hast sowas wie '\'.((int)&int))'\'' gemacht. und sowas geht ja schöner ;).
DanielHeinrich hat geschrieben:
Dave hat geschrieben: Was du wichtiges noch vergessen hast is das:

Code: Alles auswählen

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}
Mhkey, werde ich einfügen - auch wenn der sicherheitstechnische Aspekt dieses Codes (und damit vermutlich auch der Grund für seine Existenz) in den von mir mitgegebenen Dateien noch nicht ganz klar ist.
Wofür das is? Damit du die Datei nur aufrufen kannst im phpBB... das heißt über die dateien im root verzeichnis. Sollte man die direkt aufrufen kommt ne nette Fehlermeldung. Hat halt sicherheitsrelevante aspekte.
DanielHeinrich
Mitglied
Beiträge: 188
Registriert: 05.04.2007 00:28
Wohnort: Bochum

Beitrag von DanielHeinrich »

Hi!
Dave hat geschrieben:[Wofür das is? Damit du die Datei nur aufrufen kannst im phpBB... das heißt über die dateien im root verzeichnis. Sollte man die direkt aufrufen kommt ne nette Fehlermeldung. Hat halt sicherheitsrelevante aspekte.
Das mag jetzt eventuell komisch klingen, aber - seien wir doch mal ehrlich:
Wenn irgendjemand die von mir mitgegebenen Dateien _direkt_ aufruft, was bekommt er? Genau. Eine weisse Seite. Warum dieses? ganz einfach: die Sprach-Dateien enthalten lediglich Code zum erstellen bzw. erweitern des $lang-Arrays.
Und die Dateien mit den Modul-Klassen? Nunja, effektiv wird doch erst die gesamte Datei geparst und dann das ganze ausgeführt. Ergo: Diese Zeilen sorgen lediglich dafür dass die Dateien größer werden und damit (unwesentlich) mehr Zeit für das parsen selbiger benötigt wird da keinerlei Aktionen beim direkten Aufruf dieser Dateien erfolgt.
Daher die Frage:
Inwiefern erhöht dieser Code die Sicherheit meiner Skripte?
(Tut mir leid wenn ich an dieser Stelle ein bissel schwer von Begriff bin aber irgendwie verstehe ich das noch nicht so ganz)

bis bald

Daniel Heinrich

edit:
was mir gerade auffält:
Es erscheint eine Fehlermeldung beim Aufruf von exit???
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

Fehlermeldung bei exit;? eigentlich nciht...

Und das hat schon nen sinn... Viele exploids in der vergangenheit waren nur der fehler dass das mit dem exit; fehlte. So konnte man dann andere scripte ausführen. Und ich glaube kaum das du irgendwas an Zeitunterschied merkst. Geschweige denn das deine Festplatte von den Zeilen voll wird :D
Benutzeravatar
MartectX
Ehemaliger Übersetzer
Beiträge: 648
Registriert: 10.05.2008 17:08
Wohnort: Marienplatz

Beitrag von MartectX »

DanielHeinrich hat geschrieben:Es erscheint eine Fehlermeldung beim Aufruf von exit???
Nein, aber Du könntest auch sowas nettes machen wie

Code: Alles auswählen

if (!defined('IN_PHPBB'))
{
   die('Die, haxx0r, die!!');
}
DanielHeinrich
Mitglied
Beiträge: 188
Registriert: 05.04.2007 00:28
Wohnort: Bochum

Beitrag von DanielHeinrich »

das mit der Zeit war eher scherzhaft gemeint.

Dennoch sehe ich keinen Weg wie du die von mir geschriebenen Dateien nutzen könntest um ein anderes Script unrechtmäßig auszuführen.

Klar man könnte nun argumentieren dass durch diesen "Schutz" der Code nur durch phpBB genutzt werden kann. Nunja - Wenn der Nutzer dieser Mod meint die enthaltenen Dateien in eigenen Skripten nutzen zu können/müssen wird ihn dieser Code kaum davon abhalten. Und jeder "Angreifer" der die der Mod beiligenden Dateien direkt aufruft wird genauso ohne diesen vor einer weißen Seite stehen wie mit.
Effektiv sehe ich da also zwei Möglichkeiten für den Angreifer:
1) Er findet eine Schwachstelle im Code der die Funktionen dieser Dateien nutzt und nutzt diese aus. Dann hilft dieser von dir geschriebene Code allerdings wenig.
2) Damit die dem Mod beiliegenden Dateien _irgendetwas_ tun/ausführen(vom Geladenwerden durch den Classloader von php einmal abgesehen) müsste der User die Dateien so abgeändert haben dass schon beim Laden Code ausgeführt wird - DAS ist auch der einzige Grund den ich im Moment sehe warum man den von dir geschriebenen Code brauchen können sollte.

Solltest du also auf Punkt 2 ansteuern verstehe ich mittlerweile deinen Gedankengang. Wenn nicht: Bitte erkläre ihn mir da ich mich vor allem in Punkto Sicherheit immer verbessern will.

danke schon mal und bis bald

Daniel Heinrich

edit:
MartectX hat geschrieben:
DanielHeinrich hat geschrieben:Es erscheint eine Fehlermeldung beim Aufruf von exit???
Nein, aber Du könntest auch sowas nettes machen wie

Code: Alles auswählen

if (!defined('IN_PHPBB'))
{
   die('Die, haxx0r, die!!');
}
ich weiss - klar ;-)
ich wollte lediglich auf den Lapsus im Code von Dave hinweisen bei dem er meint dass da " ne nette Fehlermeldung" kommt.
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

Is jetzt nicht aus nem phpBB3 aber als kleines Beispiel:

Code: Alles auswählen

language/lang_english/lang_xyz.php?phpbb_root_path=
Und nach dem = machst du nen kleines feines script was aufgerufen wird und schon biste aufm server ;). Gibt es auch mit

Code: Alles auswählen

include/function_xyz.php?phpbb_root_path=
Auch wenn du nun sagst das es bei dir nicht geht. Stell dir vor einer bearbeitet deinen Mod baut eine solche lücke ein und genau du hast sie schon vorher mit den paar Zeilen code verhindert :D
DanielHeinrich
Mitglied
Beiträge: 188
Registriert: 05.04.2007 00:28
Wohnort: Bochum

Beitrag von DanielHeinrich »

Ok - ich denke wir meinen ungefähr beide dasselbe, von daher denke ich einfach mal dass ich das jetzt verstanden habe.

bis dann und danke

Daniel Heinrich
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

Wenigstens etwas :D

Was mir noch einfällt: Damit du nen bißchen an performance bekommst:

Code: Alles auswählen

    $sql = 'SELECT forum_id 
		FROM ' . FORUM_SELECTION_TABLE . '
		WHERE user_id = ' . (int) $user->data['user_id'];
    $subqery_result=$db->sql_query($sql, 300);
(z.B. für 5min) Damit hast du das ergebnis vom query im cache. Hat halt den vorteil das du nicht immer das query ausführen mußt bei jedem aufrufen der seite.
Der nachteil is bisher (habe leider nix anderes gefunden) das auch nach dem updaten der cache weiter besteht. function destroy($var_name, $table = '') in der acm klasse bringt da wohl wenig im nur ein query zu killen. Da müßest du dann immer den ganzen cache für alle User killen. Wobei es vieleicht was bringt da man sowas ja nicht alle 2min ändert.

Naja... War ja nur ne idee :D


MfG
Dave
DanielHeinrich
Mitglied
Beiträge: 188
Registriert: 05.04.2007 00:28
Wohnort: Bochum

Beitrag von DanielHeinrich »

Update - neue Version: 2.0.5 STABLE
So, habe nun den Code noch einmal überarbeitet, ausserdem noch eine fehlende Template-Anweisung hinzugefügt.

Des weiteren hat sich die Addresse der Zip-Datei geändert (das habe ich schon im ersten Post korrigiert) und ich habe einen prepatched-Ordner hinzugefügt der die schon vorgepatchten Dateien für die aktuelle Version enthält(weniger Arbeit für diejenigen die ein neues Forum aufsetzen^^)

Ich denke mein Mod sollte nun endlich soweit sein dass er endlich vom BETA- ind den STABLE-Status wechselt.

bis bald

Daniel Heinrich

Achja - wegen dem Query-Cache: Ich nutze den zwar an einigen Stellen, hatte mich aber an anderen bewusst dagegen entschieden ;-)
Benutzeravatar
Drakeman
Mitglied
Beiträge: 44
Registriert: 21.02.2006 12:54
Wohnort: Reichertshofen / Obb.
Kontaktdaten:

Beitrag von Drakeman »

Hallo Daniel,

zuerst einmal ist das eine klasse Arbeit. Ich hab vor jedem Respekt, der so etwas kann.

Der MOD an sich läuft eigentlich, die auftauchenden Probleme haben bei mir wohl eher etwas mit den Einstellungen zu tun. Folgendes Problem habe ich und hoffe, daß du mir da weiterhelfen kannst:

Wenn jetzt ein registrierter ins Forum kommt sieht er keine Foren. Ich denke mal, daß dies an der Default-Einstellung der Foren liegt mit der ich so meine Probleme habe, denn ich weiß ehrlich gesagt nicht, wie ich das einstellen soll. Ich hoffe mal, daß du mir da weiterhelfen kannst.

Gruß
Drakeman
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“