closett hat geschrieben:Die User ID des Admins (erste User) ist immer "2".
Im Prinzip ja.
Allerdings kann man auch die Situation nutzen, dass bei phpBB 2.x die Usernummer "1" im Normalfall unbelegt ist und aus Sicherheitsgründen hier eine Art "Superadmin" anlegen, der für alle anderen Besucher immer unsichtbar ist und sich in "kritischen Situationen" einloggen kann.
Das kann beispielsweise dann der Fall sein, wenn durch die in phpBB 2.0.19 hinzugekommene Login-Sperre irgendjemand versucht, durch mehrmalige, bewusst ungültige Anmeldeversuche das Benutzerkonto des "normalen" Admins (dessen Benutzername ja meist allgemein bekannt ist), vorübergehend zu sperren und dieser für eine bestimmte Zeit (Standard: 30 Minuten) keine Möglichkeit mehr hat, ins Forum zu kommen - von speziellen Entsperrversuchen wie über phpmyadmin (z. B. user_login_tries bzw. user_last_login_try auf "0" setzen) mal abgesehen.
Hierfür müssen in diversen Dateien lediglich bestimmte SQL-Abfragen ergänzt werden um:
Dazu gehören (bei einem normalen phpBB ohne Modifikationen):
- memberlist.php (3 x, zwei mal in Liste, einmal in Suche)
- privmsg.php
- viewonline.php (kann entfallen, falls Status des Super-Admin "versteckt" ist)
- includes/functions.php (2 x)
- includes/functions_search.php
- includes/page_header.php (betrifft normalerweise nur die Startseite und kann eigentlich auch entfallen, wenn sich der Superadmin "versteckt")
und ggf. noch ein paar Dateien im Admin-Verzeichnis, falls man den anderen Admins misstrauen sollte
Außerdem ist es u. U. sinnvoll, den entsprechenden Benutzernamen des Super-Admins im ACP unter "Benutzer -> Benutzernamen verbieten" einzutragen, damit bei Registrierversuchen nicht die Meldung erscheint, dass der "Benutzername bereits belegt" wäre.
Wenn normale User den Benutzernamen des Superadmins nicht kennen, ist dieser somit vor solchen Loginsperren oder sonstigen Login-Hacks weitestgehend sicher. Dass dieser Superadmin natürlich nichts ins Forum schreiben sollte, weil dort sonst sein Name erscheint, ist natürlich auch klar. Ggf. kann man dieses Versehen vermeiden, in dem man posting.php (etwa nach "End session management") ergänzt um:
Code: Alles auswählen
if (( $mode == 'newtopic' || $mode == 'reply' || $mode == 'quote') && ($userdata['user_id'] == '1'))
{
message_die(...hier eine Meldung, dass Superadmin besser nichts schreiben sollte...)
}
(das Editieren von Beiträgen klappt dagegen nach wie vor).
Siehe auch:
Unsichtbarer Administrator, hier geht es allerdings um alle Administratoren und nicht nur um einen "Superadmin".