Seite 1 von 2
Überlastung der Suchfunktion
Verfasst: 16.11.2004 22:18
von Waagenbauer
Folgendes, gerade entdeckt:
Wenn man als Suchanfrage unter Author ein '*' oder ein '%' (Platzhalter) als einziges Zeichen eingibt sucht das phpBB sich blöde.
Bei mir wurde das absichtlich, oder wie auch immer, durchgeführt, und legte das Forum für 3 Minuten lahm. Bei großen Foren ist das fatal.
Ich nenne das mal Sicherheitsloch.
Ich habe schon nach einem Fix dafür gesucht. Bisher nix gefunden.
Es müsste abgefragt werden, wie lange das Suchwort für Text und Author ist, sollten min. 3 Zeichen haben, sonst Fehler.
BITTE HIER NICHT TESTEN !!!!!!
Titel geändert - es handelt sich nicht um eine Sicherheitslücke (Schumi)
Verfasst: 16.11.2004 22:38
von Waagenbauer
Gottseihdank hier ist der Fix:
http://www.phpbb.com/phpBB/viewtopic.ph ... 57#1061457
Ist das hier schon gefixt?
'*' ergab 56533 Suchergebnisse

Verfasst: 16.11.2004 22:53
von Waagenbauer
Hier ist jetzt mein Fix, der nur Autoren-Suche ab 3 Zeichen mit * bzw. % zulässt, zusammen mit dem Fix von oben:
Suche in search.php:
Code: Alles auswählen
$search_author = str_replace('*', '%', trim($search_author));
Ersetze:
Code: Alles auswählen
$sql = "SELECT user_id
FROM " . USERS_TABLE . "
WHERE username LIKE '" . str_replace("\'", "''", $search_author) . "'";
Durch:
Code: Alles auswählen
// Fix by Waagenbauer
if ( strlen( str_replace('%', '', $search_author) ) < 3 )
{
message_die(GENERAL_ERROR, "Couldn't obtain list of matching users (searching for: $search_author)");
}
$author_sql = (strstr($search_author, '%')) ? "LIKE '" . str_replace("\'", "''", $search_author) . "'" : "='" . str_replace("\'", "''", $search_author) . "'";
//$sql = "SELECT user_id
// FROM " . USERS_TABLE . "
// WHERE username LIKE '" . str_replace("\'", "''", $search_author) . "'";
$sql = "SELECT user_id
FROM " . USERS_TABLE . "
WHERE username " . $author_sql;
Verfasst: 16.11.2004 23:28
von [Kleopatra]
Interessant!
Eine sinnvollere Fehlermeldung wäre
Code: Alles auswählen
// Fix by Waagenbauer
if ( strstr($search_author, '%') && strlen($search_author) < 3 )
{
message_die(GENERAL_ERROR, "Your author search keyword is below 3 characters, please go back and increase the length of the search keyword or choose a different keyword for author.");
}
...
Danke für den Hinweis und den Fix!
Kleo
Verfasst: 17.11.2004 06:47
von PhilippK
In neueren Versionen von phpBB ist eine Abbruch-Routine dabei, die nur eine begrenzte Version von Sucherergebnissen zurückgibt. Vermutlich hat sich damit auch das geschilderte Problem gelöst - müsste ich mir aber noch mal anschauen.
Gruß, Philipp
Verfasst: 17.11.2004 23:33
von Waagenbauer
Ich habe meinen Fix oben noch mal verbessert:
Code: Alles auswählen
// Fix by Waagenbauer
if ( strlen( str_replace('%', '', $search_author) ) < 3 )
{
message_die(GENERAL_ERROR, "Couldn't obtain list of matching users (searching for: $search_author)");
}
Jetzt werden in der Suchanfrage $search_author erstmal alle % rausgefiltert und dann geprüft.
Das hat den Vorteil, wenn mehrere * oder % (werden wieder als ein Platzhalter interpretiert) eingegeben werden, wird auch eine Fehlermeldung ausgegeben.
Z.B. bei:
***
d**
%%%%%
%%%d%%%
Hierbei muss man jetzt min 3 Zeichen eingeben um Autoren zu suchen, z.B. 'dow*' für alle die mit 'dow' anfangen.
Verfasst: 18.11.2004 13:16
von Garfield312
@Waagenbauer:
Dein Fix hat meine komplette Suchfunktion (2.0.10) lahmgelegt.
Keinerlei Ergebnisse mehr, egal nach welchem Wort.
Verfasst: 18.11.2004 17:20
von Matze_1
Garfield312 hat geschrieben:@Waagenbauer:
Dein Fix hat meine komplette Suchfunktion (2.0.10) lahmgelegt.
Keinerlei Ergebnisse mehr, egal nach welchem Wort.
selbst schuld wenn man patches von "usern" einbaut,
Verfasst: 18.11.2004 23:36
von Waagenbauer
Garfield312 hat geschrieben:@Waagenbauer:
Dein Fix hat meine komplette Suchfunktion (2.0.10) lahmgelegt.
Keinerlei Ergebnisse mehr, egal nach welchem Wort.
Das kann ja nicht sein. Dann hast du das falsch eingebaut.
Wenn der Patch nicht gehen sollte, funzt nur die Suche nach Autoren nicht mehr. Falls bei Aufruf von search.php eine Fehlermeldung kommt, hast du den Code falsch eingesetzt oder einen Syntax-Fehler verursacht.
Ich muss ja jetzt nicht erklären, wie man einen Patch einbaut? Das sollte man schon drauf haben und sich ein wenig mit dem phpBB und PHP auskennen.
Bei mir funzt das jedenfalls.
Verfasst: 19.11.2004 09:21
von Garfield312
@Waagenbauer:
Einen kleinen Patch einzubauen, ist nicht wirklich ein Problem für mich
Ich habe nix falsch eingebaut, es erschien auch keine Fehlermeldung, die Seite ließ sich ganz normal aufrufen.
Die Suche egal nach was erbrachte einfach kein Ergebnis mehr.
Patch wieder raus, Orig rein -> funzt wieder.