Hallo !
Ich habe mein Seitenlayout in einer DB abgelegt. Innerhalb des
Seitenlayouts werden mittels "include" und Funktionen, PHP-Scripts eingefügt. Also so z.B. ....
Beim Auslesen des Seitenlayouts aus der DB wird der PHP-Code ja
nun nicht ausgeführt sondern nur angezeigt. Daher verwende ich
eval(), und zwar so....
Klappt auch wunderbar!
Um zu verhindern, das man mir z.B. beim Eintrag in mein Gästebuch
PHP-Code einschläust, filter ich die Gästebuch-Ausgabe mit
..... was auch wunderbar funktioniert.
Jetzt meine Frage(n).
Gilt in diesem Falle immer noch, das eval = evil ist, oder kann
man mir trotzdem noch "bösen Code" einschleusen? Und wenn ja, wie.
Was müßte ich noch tun, um die Sicherheit meiner Site zu erhöhen?
(Und bitte, empfehlt mir jetzt keine Template-Engine, die möchte ich nämlich eigentlich nicht haben)
Und wie stehts mit der Geschwindigkeit, da ja jeder Seitenaufruf über
eine Datenbankabfrage und eval läuft?
Tommes !
Ich habe mein Seitenlayout in einer DB abgelegt. Innerhalb des
Seitenlayouts werden mittels "include" und Funktionen, PHP-Scripts eingefügt. Also so z.B. ....
PHP-Code:
<html>
<head>
<title>Seitenlayout</title>
</head>
<body>
<?php include "header.php" ?>
<h3>Mein Seitenlayout</h3>
<?php gaestebuch_function(); ?>
</body>
</html>
Beim Auslesen des Seitenlayouts aus der DB wird der PHP-Code ja
nun nicht ausgeführt sondern nur angezeigt. Daher verwende ich
eval(), und zwar so....
PHP-Code:
$sql = "SELECT * FROM template
WHERE TemplateId = 1";
$result = mysql_query($sql);
while ($row=mysql_fetch_array($result))
{
ob_start();
$code=str_replace('<'.'?php','<'.'?',$row['tpl']);
$code='?'.'>'.trim($row['tpl']).'<'.'?';
eval($code);
$output = ob_get_contents();
ob_end_clean();
}
echo $output;
Um zu verhindern, das man mir z.B. beim Eintrag in mein Gästebuch
PHP-Code einschläust, filter ich die Gästebuch-Ausgabe mit
PHP-Code:
$row['text'] = nl2br(stripslashes(htmlspecialchars($row['text'])));
Jetzt meine Frage(n).
Gilt in diesem Falle immer noch, das eval = evil ist, oder kann
man mir trotzdem noch "bösen Code" einschleusen? Und wenn ja, wie.
Was müßte ich noch tun, um die Sicherheit meiner Site zu erhöhen?
(Und bitte, empfehlt mir jetzt keine Template-Engine, die möchte ich nämlich eigentlich nicht haben)
Und wie stehts mit der Geschwindigkeit, da ja jeder Seitenaufruf über
eine Datenbankabfrage und eval läuft?
Tommes !
Kommentar