Überlastung der Suchfunktion

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 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Überlastung der Suchfunktion

Beitrag 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)
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag von Waagenbauer »

Gottseihdank hier ist der Fix:

http://www.phpbb.com/phpBB/viewtopic.ph ... 57#1061457

Ist das hier schon gefixt?

'*' ergab 56533 Suchergebnisse :o
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag 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;
Zuletzt geändert von Waagenbauer am 17.11.2004 23:23, insgesamt 1-mal geändert.
http://www.kaltmacher.de - Die Seite für PC-Freaks und Profis.
[Kleopatra]
Mitglied
Beiträge: 17
Registriert: 08.11.2004 16:11

Beitrag 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
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag 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
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag 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.
Garfield312
Mitglied
Beiträge: 528
Registriert: 03.09.2004 15:54

Beitrag von Garfield312 »

@Waagenbauer:

Dein Fix hat meine komplette Suchfunktion (2.0.10) lahmgelegt.

Keinerlei Ergebnisse mehr, egal nach welchem Wort.
Matze_1
Mitglied
Beiträge: 145
Registriert: 28.02.2004 13:04

Beitrag 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,
P_E_A_C_E
/// :) \\\
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag 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.
Garfield312
Mitglied
Beiträge: 528
Registriert: 03.09.2004 15:54

Beitrag von Garfield312 »

@Waagenbauer:

Einen kleinen Patch einzubauen, ist nicht wirklich ein Problem für mich :wink:

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.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“