eregi_replace() und Denial of Service
Johannes
- php
Hallo!
Ich wollte auf meiner Homepage ein Gästebuch einrichten und hab mir deswegen ein fertiges Script heruntergeladen. Bei diesem Script werden jedesmal, wenn das Gästebuch aufgerufen wird, die bisherigen Einträge aus einer Textdatei geladen. Anschließend wird der Inhalt der Textdatei ca. 50mal der eregi_replace() funktion übergeben, um alle möglichen Sachen rauszufiltern (Smileys umwandeln etc.).
Meine Frage: Braucht das nicht viel zu viel Rechenzeit am Server? Ein Angreifer bräuchte ja nur einmal pro Sekunde das Gästebuch aufrufen und könnte so den Server schon ganz gehörig unter Druck setzen, oder?
Sollte soetwas wirklich gefährlich sein, suche ich mir nämlich lieber ein anderes Script.
MfG, Johannes
Hallo Johannes!
Wie immer wäre es schöner gewesen, wenn Du zumindest Deine HP hier referenzieren würdest, um sich mal anzuschauen, wo der Schuh drückt. Wenn ich das richtig verstehen, wird jeder Eintrag über ereg_replace() bzw. eregi_replace() umgeformt (was ist denn das für ein Käse????).
Wenn das beim Ablegen einer Nachricht ins Gästebuch passiert, ist das ein sehr guter Weg, aber beim Aufrufen???????
Gästebücher einfach wie eine Tüte Chips aufzureisen und hinzustellen, halte ich sowieso nicht für die beste Lösung. Wo ist denn da Dein Bastelgeist?
Hier mal ein Recht netter link, wo Du Dir ein Gästebuch selbst bauen kannst: http://learninphp.homer-c.de/ (glaube ab Lektion 3)
Etwa 1 Stunde lesen und verstehen, 2 Stunden basteln und fluchen und dannach jahrelang glücklicher Besitzer eines EIGENEN Gästebuchsystems ;-)
Zu Deiner eigentlichen Frage: Braucht das nicht viel zu viel Rechenzeit am Server?
JA das tut es.
:Ein Angreifer bräuchte ja nur einmal pro Sekunde das Gästebuch aufrufen und könnte so den Server schon ganz gehörig unter Druck setzen, oder?
NEIN!
Du kennst sicher die Suchfunktion hier von selfhtml, die im Prinzip (!) auch nicht mehr macht als alle Dateien zu öffnen und einen String (Suchbegriff) mit einem anderen String (Inhalt der einzelnen Dateien) zu vergleichen.
Also da kannst Du ruhig schlafen, bis Dein Gästebuch auch ausgedruckt ein Buch ergeben würde ;-)
Gruß aus Berlin!
eddi
Denke ich nicht. Beachte immer, dass der Aufruf eines einzelnen Scripts nur ein winziger Prozess im ganzen ist und vor PHP noch ein Apache läuft.
Merhaba!
die bisherigen Einträge aus einer Textdatei geladen. Anschließend wird der Inhalt der Textdatei ca. 50mal der eregi_replace() funktion übergeben, um alle möglichen Sachen rauszufiltern (Smileys umwandeln etc.).
Etwas ganz anderes: Du schreibst die Einträge in eine Textdatei.
Was passiert, wenn sich zwei Anfragen überschneiden?
Ich persönlich gäbe dem Datenbankeintrag den Vorzug.
LG - Ollie
Hi
Etwas ganz anderes: Du schreibst die Einträge in eine Textdatei.
Was passiert, wenn sich zwei Anfragen überschneiden?
Ich persönlich gäbe dem Datenbankeintrag den Vorzug.
flock(FILE,2); # Bei Perl
Bei PHP wirds bestimmt Ähnliches geben, um eine Datei zu "lock"-en.
Oder man geht den Umweg über eine manuelle "Lock"-Datei. Funktioniert sogar noch besser.
csx