[PHP] eval & highlite_string
-
Moin.
ich hab fuer mich eine testseite auf der ich schnell php-code ausfuehren kann:
eval($_POST[query]);
wenn man da jetzt das hier durchjagt:
<?php echo 'hihi'; ?>
kommt diese fehlermeldung:
Parse error: parse error, unexpected '<' in C:\xampp\htdocs\my\quickphp\execute.php(34) : eval()'d code on line 1
also lass ich mir den code mit highlite_string nochmal anzeigen:
highlite_string($_POST[query]);
dann kommt aber diese meldung (im ausgabefenster):
<?php echo
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\xampp\htdocs\my\quickphp\execute.php on line 24
'hihi\'; ?>woran liegt das?
-
schalt erstmal die magic_runtime_quotes aus - die erzeugen den fehler nr. 2
und lass einfach <?php und ?> beim eval weg.
die sicherheitslücke ist dir aber schon klar die du da aufmachst? das ist mehr als nur die Tür offen lassen
-
das ist nur bei mir auf dem lokalen computer. da ich sehr viel teste... das ich nicht jedesmal eine neue datei anlegen muss...
aehm. wie schalte ich magic_runtime_quotes nur fuer dieses script aus? oder geht das nicht?
in der php.ini sind sie auf Off:
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Offok. ich habs jetzt mit was anderen geschafft:
$query = str_replace("\'", "'", $query); $query = str_replace('\"', '"', $query); highlight_string('<?php '.$query.' ?>');
ist zwar nicht die schoenste variante aber sie funktioniert ^^