Registrieren  •  Login 
  
 
im Forum


 FAQ   Mitgliederliste   Benutzergruppen   Teamseite   Suchen 

Quelltext ausgeben
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 24.10.2007, 12:31    Titel: Quelltext ausgeben

Hallo zusammen


Ich habe den vollständigen Quelltext einer Seite in einer Datenbank gespeichert.
Kann ich den einfach (natürlich mit allen mysql-Befehlen) mit echo() ausgeben, sodass die Seite dann eben "normal" dargestellt wird?


ich hoffe mal, ihr versteht, was ich meine
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13720
Wohnort: Wien

BeitragVerfasst am: 24.10.2007, 12:59    Titel:

Probiers doch einfach aus Wink


MfG Christian
_________________
SC:Banner
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 24.10.2007, 18:45    Titel:

ich habs bereits ausprobiert... die Hälfte des Quelltextes erscheint auf der Seite... kennt jemand eine FUnktion dafür?
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13720
Wohnort: Wien

BeitragVerfasst am: 24.10.2007, 18:48    Titel:

Was heißt die hälfte?
Funktion brauchst dafür keine, einfach mit echo ausgeben und wenn das was fehlt, dann steht ess anders in der DB drinnen Wink

Oder willst du einen Quelltext farblich hervorheben?
Denn bei deiner Methode gibst du ja wirklich den HTML Quelltext aus, es wird also alles vom Browser 1:1 interpretiert als ob es eine HTML Seite ist Wink


MfG Christian
_________________
SC:Banner

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lupus
Mitglied
Mitglied



Anmeldedatum: 30.09.2007
Geschlecht: Männlich
Beiträge: 85
Wohnort: Karlsruhe

BeitragVerfasst am: 24.10.2007, 20:09    Titel:

ich glaube, du willst, dass der Quelltext interpretiert wird. D.h. dass nicht nur der html-Teil vom Browser umgesetzt wird, sondern auch der php-Teil vom Server. Dafür gibts ne Funktion, nennt sich eval().

Aber ICH RATE DIR DAVON AB!! Eval klingt nicht umsonst wie "evil" Wink. Sobald jemand deine Datenbank crackt, kann er somit beliebigen Code auf deiner Seite ausführen. Mach dir da lieber ein wenig mehr arbeit, überlege dir gut, welche Funktionen deine Seite erfüllt, programmiere diese Funktionen und lies nur die Parameter für die Funktionen (Seiteninhalte, Formularbezeichnungen, Dateipfade für Bilder...) aus der DB aus. Und schon hast du ein perfektes CMS Wink

so far,
Fiete
Nach oben
Benutzer-Profile anzeigen lupus ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 25.10.2007, 20:17    Titel:

ich hatte heute in der Schule auch noch ne Idee, ist aber etwas kompliziert zum Beschreiben...

Kann man denn die Funktion eval() noch mit irgendwas schützen?
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13720
Wohnort: Wien

BeitragVerfasst am: 25.10.2007, 20:20    Titel:

Alles was du in eval() ausführst wird 1:1 so vom Server ausgeführt. Da gibt es keine Schutzmechanismen dagegen. Bist du dir sicher, dass du eval() wirklich brauchst? Ich denke, dass du das sicher ganz anders lösen kannst. Beschreib doch einmal dein genaues Vorhaben Wink


MfG Christian
_________________
SC:Banner
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 25.10.2007, 20:48    Titel:

also... ich möchte mit der GET-Variabel 'content' den Quelltext der Seite aus der DB auslesen. Dazu habe ich für bisherige Testzwecke folgenden Code verwendet:

PHP-Code:
1
2
3
4
5
6
7
8
<?php
include('/home/www/web432/html/includes/zugriff3.inc.php');
$sql_seite "SELECT * FROM get WHERE `get_name` = '".$_GET['content']."'";
$result_seite mysql_query($sql_seite);
$u_seite mysql_fetch_array($result_seite);
echo 
$u_seite['sourcecode'];

?>


Aber in dem in der DB gepseicherten String sind eben auch noch einzelne PHP-Tags vorhanden, die aber sein müssen.
Wie das Ganze unverändert und mit echo() rauskommt, könnt ihr hier sehen.

Meine Überlegung war, dass wenn ich ja mit echo() den String in der DB ausgeben lasse, dass ich dann, wenn im DB-String ein PHP-Tag kommt, dass ich dann das so lösen würde:

Code:
echo('Dieser Text kommt aus der DB'.$u['Ein_PHP-Teil im Quellcode, der in der DB gespeichert ist].'und hier gehts weiter';

Also eigentlich kommt ja der ganze Quellcode aus der DB, aber so würde ich die Stellen mit PHP "miteinbinden".

Funkt eh nicht Very Happy
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13720
Wohnort: Wien

BeitragVerfasst am: 26.10.2007, 11:35    Titel:

Also ich glaube mal, dass du es sicherer lösen könntest und besser. Aber mal zu deinem eigentlichen Problem:
Code:
eval('?>'.$u_seite['sourcecode'].'<?php');

Damit geht's Wink


MfG Christian
_________________
SC:Banner

Dieser Beitrag wurde insgesamt 2 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lupus
Mitglied
Mitglied



Anmeldedatum: 30.09.2007
Geschlecht: Männlich
Beiträge: 85
Wohnort: Karlsruhe

BeitragVerfasst am: 26.10.2007, 12:45    Titel:

genau! Benutz mal schön eval(), dann rufe ich die Seite auf:

Code:
?content=blubb'; INSERT INTO `get` (`get_name`, `text`) VALUES ('evil','evil_code'); --


Erfolg: weil du kein mysql_real_escape_string ausführst, wird folgender Query ausgeführt:

Code:
SELECT * FROM `get` WHERE `get_name` = 'blubb';
INSERT INTO `get` (`get_name`, `text`) VALUES ('evil','evil_code();');
 --'


evil_code() ist z.b. ein ungeschütztes Uploadformular...

Dann rufe ich die Seite
Code:
?content=evil
auf, du führst eval(evil_code); aus und jemand lädt deinen Server mit Kinderpornos und Warez voll... Und das alles nur wegen einer Funktion Wink

Was ich damit sagen wollte: Denk dir auf jeden Fall was anderes aus, eval() solltest du NIE verwenden!!

so far,
Fiete

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von lupus.
Nach oben
Benutzer-Profile anzeigen lupus ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13720
Wohnort: Wien

BeitragVerfasst am: 26.10.2007, 13:51    Titel:

lupus hat Folgendes geschrieben:
eval() solltest du NIE verwenden!!

Da hast du schon recht, aber z.B. bei Templateklassen o.ä. wäre man ohne eval() aufgeschmissen Wink

Übrigens: Soviel ich weiß unterstützten die normalen MySQL Funktionen nicht mehrere getrennte Queries, das kann man nur bei MySQLi machen, oder?


MfG Christian
_________________
SC:Banner

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lupus
Mitglied
Mitglied



Anmeldedatum: 30.09.2007
Geschlecht: Männlich
Beiträge: 85
Wohnort: Karlsruhe

BeitragVerfasst am: 26.10.2007, 14:14    Titel:

okay. Du hast Recht, es geht nun mal nur mit mysqli_multi_query(); Ändert trotzdem wenig daran, dass eval nicht verwendet werden sollte. Und zeige mir mal bite eine Templateklasse, in der eval() unumgänglich ist... Smile
Nach oben
Benutzer-Profile anzeigen lupus ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13720
Wohnort: Wien

BeitragVerfasst am: 26.10.2007, 14:20    Titel:

Schau dir mal phpBB oder eine andere Forensoftware an Wink
Bei phpBB ist es die Datei /includes/template.php


MfG Christian
_________________
SC:Banner
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lupus
Mitglied
Mitglied



Anmeldedatum: 30.09.2007
Geschlecht: Männlich
Beiträge: 85
Wohnort: Karlsruhe

BeitragVerfasst am: 26.10.2007, 14:32    Titel:

Code:
1:function pparse($handle)
2:     {
3:         if (!$this->loadfile($handle))
4:         {
5:             die("Template->pparse(): Couldn't load template file for handle $handle");
6:         }
7:
8:         // actually compile the template now.
9:         if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle]))
10:         {
11:             // Actually compile the code now.
12:             $this->compiled_code[$handle] = $this->compile($this->uncompiled_code[$handle]);
13:         }
14:
15:         // Run the compiled code.
16:         eval($this->compiled_code[$handle]);
17:         return true;
18:     }

Toll. Was da jetzt für code genau kompiliert werden muss ist mir nicht ganz ersichtlich, will mir jetzt auch nicht wirklich n komplettes phpbb runterladen... Was wird da denn für code geparst?

Fiete
Nach oben
Benutzer-Profile anzeigen lupus ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13720
Wohnort: Wien

BeitragVerfasst am: 26.10.2007, 14:44    Titel:

Ganz simpel: Alle Templatezeilen werden mit echo ersetzt / ausgegeben, die Klasseninternen Variablen eingefügt, Schleifen eingefügt, bzw. IF Teile wo sie benötigt werden, usw.... - der Vorteil daran ist, dass man die fertig geparste Templatedatei cachen kann, so wie es oder wie ich es mache oder bei phpBb3 gemacht wird. Dadurch werden einfach die Klasseninternen Variablen immer wieder aktualisiert und der Code durch eval() geschickt, bzw, beim Cache mit include() Wink

Da kann man schnell Templateteile blockieren, ersetzen, mehrfach anzeigen lassen, usw. So geht das ganze recht fix. Ohne eval() wäre das jedenfalls nicht möglich.


MfG Christian
_________________
SC:Banner

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.
Du kannst Dateien in diesem Forum nicht hochladen.
Du kannst Dateien in diesem Forum nicht herunterladen.

 

Alle Zeiten sind GMT + 1 Stunde
Aktuelles Datum und Uhrzeit: 21.02.2020, 14:24
Nach oben
Valid HTML 4.01 Transitional
Valid CSS!
Software based on work from the phpBB-Group  •  Deutsche Übersetzung von phpBB.de

netcup - Internetdienstleistungen
 
 
[ happytec.at | forum.happytec.at | blog.happytec.at | esports.happytec.at | event.happytec.at ]