eval() unsicherer als include() ?

martinibook

martinibook

Aktives Mitglied
Thread Starter
Dabei seit
20.08.2005
Beiträge
8.730
Reaktionspunkte
350
Hi,

Ich rüste gerade von einzelnen Dateien (php) auf eine Datenbank um. Einige Seite, die ansonsten komplett normale Inhalte enthalten haben auch Spuren von PHP. In den php Dateien war das kein Problem, doch in der Datenbank steht erstmal Text.

Spricht irgendwas dagegen, das mit eval() auszuwerten?

Martin
 
Hört sich nach einem Rezept für spannende Probleme an, sobald jemand einen Text mit Codebeispielen in die Datenbank einträgt…
 
Ist eine Schulhomepage, Codebeispiele kommen so nicht vor...

Aber woran ich noch gar nicht gedacht hatte:
Die Texte können alle CMS mäßig bearbeiten, aber damit ja auch den Code...

Da muss ich noch mal gründlich drüber nachdenken. Danke für den Anstoß!
 
Man könnte es natürlich so einstellen, dass nur hochrangige Leute Seiten mit PHP bearbeiten dürfen. Aber jeder könnte, wenn man weiß dass ein eval() dahintersteckt auch wieder PHP einschleusen. Das ist ja gar nicht so einfach.

Wenn man einen IFrame mit einer PHP Datei anzeigt, dann kann man das so nicht mehr manipulieren, aber dann bräuchte man auch kein eval() mehr.

Oder man macht eine Trennung, wenn eine PHP Datei da ist, die dem Datenbankeintrag entspricht, dann nehme ich die Datei, ansonsten den Text aus der DB ohne eval().

Sieht jemand eine Lösung, die ich nicht sehe?
 
Da muss ich noch mal gründlich drüber nachdenken.

Allerdings!
Ich hab auch eine (kleine) Schulhomepage über, die ich in jahrelanger Arbeit (nebenbei) auch auf Datenbank umgestellt hab. Melde dich falls du Ideen zum Umsetzung brauchst, ich finde ich hab das (als Laie) recht gut gelöst.
 
Man könnte es natürlich so einstellen, dass nur hochrangige Leute Seiten mit PHP bearbeiten dürfen. Aber jeder könnte, wenn man weiß dass ein eval() dahintersteckt auch wieder PHP einschleusen. Das ist ja gar nicht so einfach.

Wenn man einen IFrame mit einer PHP Datei anzeigt, dann kann man das so nicht mehr manipulieren, aber dann bräuchte man auch kein eval() mehr.

Oder man macht eine Trennung, wenn eine PHP Datei da ist, die dem Datenbankeintrag entspricht, dann nehme ich die Datei, ansonsten den Text aus der DB ohne eval().

Sieht jemand eine Lösung, die ich nicht sehe?

Ja: keinen benötigten PHP-Code in der Datenbank speichern.
 
Läuft wohl darauf hinaus. Aber so kann niemand online die PHP Daten verändern, das ist doch sicher auch was. Denn mit file könnte man dann ja recht einfach die ganzen anderen PHP Dateien auslesen und eine Lücke finden...

Danke für die Ratschläge!
 
Aber so kann niemand online die PHP Daten verändern, das ist doch sicher auch was.

Ich verstehs nicht ganz... Willst du dass andere online den PHP-Code ändern sollen können? Wenn JA,
1. wozu?
2. wieso willst du es in eine Datenbank schreiben und nicht ganz einfach in den Dateien belassen?
3. könntest du es mit Text-Dateien machen, die du mit fopen() bearbeiten und per include() einbinden kannst.
 
Ich meinte das als Vorteil, denn sowas wäre die Ausgabe eines Gästebuchs. Da muss man eigentlich nicht mehr dran.

Wir haben eine Reaktion in der Schule, die Leute dürfen neue Texte tippen, das auch von Zuhause. Diese werden dann freigeschaltet.

Die Datenbank brauchen wir wegen einer Volltextsuche und weil sich dann die Daten leichter verwalten/bearbeiten lassen. Und man sich nicht um Dateirechte kümmern muss.

Leute die keinen FTP Zugang haben, sollen nicht in der Lage sein diesen zu verändern. Und wenn der in der Datenbank wie alles andere steht, muss man entweder die Bearbeitung per Maske sperren oder ihn gar nicht in die Datenbank packen.
 
Ich glaub du denkst zu kompliziert...

Die Texte deiner Redaktion kannst du ja in der Datenbank lassen. Alles andere lass als PHP und HTML in deinen Dateien.
Die neuen Texte lass die Leute über eine eigene Seite eingeben, die z.B. per htaccess gesperrt ist und die Texte dann in die Datenbank einträgt.
 
Rocco hat Recht. Vielleicht kannst Du auch eines der mittlerweile reiferen CMSe nutzen. Da ist vom Login, über Suche bis zum WYSIWYG-Editor schon alles drin.

Wenn es wirklich nur für die Unterstützung einer Suche sein soll, schau Dir mal die customizable search von Google an. Das ist wie ein kleines Google im Design Deiner Website.

Gute Volltextsuchen (die tatsächlich finden, was Du suchst) mit MySQL und PHP sind viel Arbeit.
 
Wenn man die Seite gut genug aufbaut, sollte eigentlich keine Suchfunktion notwendig sein. Die Datenbank ist eigentlich schon länger fällig, ich habe das nur noch nie in Angriff genommen.

Ich lasse dann die ganzen festen Inhalte in Dateien und die dynamischen kommen in die DB.
 
Zeig mal her die Seite bitte!
 
Die Seite ist hier, allerdings ist das noch komplett die Fassung mit den Textdateien.
 
Also ich muss da Rocco auch Recht geben, in die Datenbank gehören die Nutzdaten, nicht der Sourcecode. Und die Suchfunktion ist ja gerade mit den SQL Befehlen total simpel. Ausser du willst den Quellcode ebenfalls durchsuchen lassen und snippets daraus anzeigen lassen. Ansonsten gibt es absolut keinen Grund den Code in die DB zu packen.
 
Okay, ich habe jetzt quasi sowas hier gemacht:

Wenn eine PHP Datei zu dieser (nummerierten) Kategorie gehört:
-> Rein damit.

Ansonsten:
-> Text aus der DB verarbeiten.


Somit kann auch keiner online den Code verändern, sondern nur Leute, die den FTP Zugang haben, und die kann man an zwei Fingern abzählen ;)
 
Zurück
Oben Unten