Page 1 of 1

Einbau in die Website

Posted: Thu Oct 27, 2005 9:53 pm
by BigTim
Hallo!
Ich wollte meinen Blog mit folgenden Script in meine Website einbinden:
<?php
if(isset($_GET['action']) && file_exists('./include/'.$_GET['action'].'.php')) {
include('./include/'.$_GET['action'].'.php');
}
else {
include('Url_zum_Blog');
}
?>
Des klappt auch ganz gut, nur werden die Umlaute nicht wirklich angezeigt...
Bekomme z.B. folgende Meldung: " Keine Einträge vorhanden"

Was kann man da machen? Hab mich in Smarty versucht, aber Hoffnungslos verloren... :( Benutze die 0.9 Beta 3.

Re: Einbau in die Website

Posted: Fri Oct 28, 2005 11:03 am
by garvinhicking
Dein Code könnte ein größeres Sicherheitsleck haben, wenn Dein Code nicht vorher noch die Variablen überprüft.

Stell Dir mal vor, man übermittelt folgendes:

http://bigtim.de/index.php?action=../.. ... /passwd%00

Damit könnte man, eine gewisse Config vorausgesetzt, relativ leicht beliebige Dateien einbinden. Also, vorher aus $_GET['Action'] alle bösen Zeichen löschen (./\%), und erst dann includen. :)

Anstelle eins Includes würde ich lieber auf die Blog-URL redirecten:

Code: Select all

header('Location: http://blog.de/');
- oder wenn Du es wirklich einbinden willst, lieber den Embed-Modus mit ob_start() und Co nutzen. Der ist in der s9y.org doku beschrieben und hier im Forum auch öfter angesprochen.

Die Umlaute kommen wohl daher, weil der Header nicht korrekt gesetzt werden konnte und die Seite nicht in UTF-8 dargestellt wird. Das kann daher kommen wenn Du vor deinem Include schon HTML ausgegeben hast...

Viele Grüße,
Garvin

Posted: Fri Oct 28, 2005 1:41 pm
by BigTim
Hey Garvin,
danke erstmal für die Antwort.

Eine Frage hab ich jetzt noch:
Also, vorher aus $_GET['Action'] alle bösen Zeichen löschen (./\%), und erst dann includen.

Was genau soll ich nun ändern? Die klappt ja sonst ganz gut.

Ich werd mich jetzt mit dem Embed-Modus vertraut machen. Sieht wirklich einfach aus... :lol:

Danke für die Hilfe! :wink:

Posted: Fri Oct 28, 2005 1:46 pm
by garvinhicking
Einfach folgendes:

Code: Select all

$_GET['action'] = str_replace(array("\r", "\n", "\t", "\0", ".", "/", "\\"), array('','','','','','',''), $_GET['action']);
:)

grüße,
Garvin

Posted: Fri Oct 28, 2005 2:02 pm
by BigTim
Alles klar! Vielen Dank! :)

Posted: Fri Oct 28, 2005 3:28 pm
by BigTim
Hallo nochmal! :oops:
Des ist mir jetzt äußerst unangenehm und peinlich :oops: :lol: und ich hoffe du entschuldigst meinen Doppelpost. Hab des mit

Code: Select all

$_GET['action'] = str_replace(array("\r", "\n", "\t", "\0", ".", "/", "\\"), array('','','','','','',''), $_GET['action']); 
ausprobiert. Aber irgendwie... Ich bekomm´s nicht zum laufen. Wie muss ich des in den vorhandenen Code einfügen, so das es funktioniert?

Ich weiß, ich bin keine Leuchte... :shock: :D

Posted: Sun Oct 30, 2005 12:17 pm
by garvinhicking
Diese Codezeile kannst Du eigentlich direkt vor deiner If-Abfrage einbauen, quasi als erste zeile in deiner Datei :)

Grüße,
Garvin

Posted: Sun Oct 30, 2005 6:42 pm
by BigTim
Axo ist des gemeint! Dann vielen Dank und nochmal alles Gute nachträglich! Hab ja schon im Blog gratuliert! :lol:

Grüße, Tim

Edit: Funktioniert! Danke nochmals! :)