Include & Sicherheit

Include & Sicherheit

am 28.06.2006 20:29:04 von Rainer Wahl

Ich wollte hier einmal fragen wie es sich mit der Sicherheit beim
Includen verhält. Auf meiner Homepage füge ich ein Menü in die
einzelnen Seiten ein, welches ich in eine extra Datei gepackt habe, das
ich dann mittels include jeweils einbinde. So muß ich nur eine Datei
editieren um das Menü zu verändern und nicht jede einzelne Seite auf
der Homepage.

Eingefügt wird das Menü mittels

if (file_exists("datei.dat"))
include("datei.dat")

wobei die Überprüfung hier ob die Datei lokal existiert IMO überflüssig
ist. Ich übergebe ja keine Variable an das include und somit kann da
auch niemand etwas von außen einschleusen.

Liege ich damit richtig, daß ich mir keine weiteren Gedanken zum Thema
Sicherheit machen muß, solange ich nichts variables includiere?


-=( Rainer )=-

--
Airbrush FAQ, Modellbau & more

Re: Include & Sicherheit

am 28.06.2006 21:40:45 von Matthias Wuebbeling

Rainer Wahl wrote:

> Liege ich damit richtig, daß ich mir keine weiteren Gedanken zum Thema
> Sicherheit machen muß, solange ich nichts variables includiere?

Vollkommen richtig! Variables wäre auch ok, wenn du dabei die Kontrolle
über die Variable, bzw. ihren Inhalt behälst.

Grüße,
Matze

Re: Include & Sicherheit

am 28.06.2006 23:40:11 von Oliver Block

Rainer Wahl wrote:
> Liege ich damit richtig, daß ich mir keine weiteren Gedanken zum Thema
> Sicherheit machen muß, solange ich nichts variables includiere?

Keinesfalls! gib mal folgendes in die Adresszeile Deines Browsers ein:



Du solltest in Deinem Webserver sagen, daß er Dateien mit Endungen dat nicht
beantwortet. Bei Apache machst Du das über eine Files-Direktive entweder in
httpd.conf oder in .htaccess

Gruß,

Oliver

Re: Include & Sicherheit

am 29.06.2006 00:49:57 von Johannes Mueller

Oliver Block schrieb:

> Rainer Wahl wrote:
>> Liege ich damit richtig, daß ich mir keine weiteren Gedanken zum
>> Thema Sicherheit machen muß, solange ich nichts variables
>> includiere?
>
> Keinesfalls! gib mal folgendes in die Adresszeile Deines Browsers
> ein:
>
> http://adresse/zu/datei.dat

....da könnte ja ein menü angezeigt werden ;P - im Prinzip natürlich
richtig, was du da sagst, aber mit sicherheit und in dem Aspekt, wie
ihn der OP formuliert hat ein bisschen übers ziel hinausgeschossen...

gute nacht
Johannes

--
Emails ohne "[nospam]" im Betreff werden kommentarlos gelöscht.

Re: Include & Sicherheit

am 29.06.2006 00:52:22 von Johannes Mueller

Oliver Block schrieb:

> Rainer Wahl wrote:
>> Liege ich damit richtig, daß ich mir keine weiteren Gedanken zum
>> Thema Sicherheit machen muß, solange ich nichts variables
>> includiere?
>
> Keinesfalls! gib mal folgendes in die Adresszeile Deines Browsers
> ein:
>
>

....dann sieht er das besagte Menu. Ich denke, dieser "kritische" Aspekt
ist vernachlässigbar! ;p

gute nacht
Johanns

--
Emails ohne "[nospam]" im Betreff werden kommentarlos gelöscht.

Re: Include & Sicherheit

am 29.06.2006 06:33:04 von unknown

Post removed (X-No-Archive: yes)

Re: Include & Sicherheit

am 29.06.2006 09:59:19 von thornythegod

Dirk Sohler schrieb:

> Ich mache das so...
>
> index.php?zeige=wasauchimmer
>
> ....und in der Überprüfung mache ich dann vereinfacht...
>
> if ($zeige == 'wasauchimmer') { include('datei_fuer_wasauchimmer.php'); }
> elseif ($zeige == 'wasanderes') { include('andere_datei.htm'); }
> elseif ($zeige == 'nochwas') { include('nochwas.jpg'); }
> else { include('fehler.php') }

Kleiner Vorschlag: Speichere dein "zeige" in einer Textdatei und die
Datei zum includieren daneben, lasse ein parse_ini_file() drüber laufen
und benutze dann den erzeugten Array zum includieren. Das spart erstens
viel Code und zweitens erhöht es die Lesbarkeit und Wartbarkeit. :)

Gruß,
Torsten

Re: Include & Sicherheit

am 29.06.2006 10:44:54 von unknown

Post removed (X-No-Archive: yes)

Re: Include & Sicherheit

am 29.06.2006 11:13:22 von Joerg Behrens

Rainer Wahl schrieb:
> Ich wollte hier einmal fragen wie es sich mit der Sicherheit beim
> Includen verhält. Auf meiner Homepage füge ich ein Menü in die
> einzelnen Seiten ein, welches ich in eine extra Datei gepackt habe, das
> ich dann mittels include jeweils einbinde. So muß ich nur eine Datei
> editieren um das Menü zu verändern und nicht jede einzelne Seite auf
> der Homepage.
>
> Eingefügt wird das Menü mittels
>
> if (file_exists("datei.dat"))
> include("datei.dat")
>
> wobei die Überprüfung hier ob die Datei lokal existiert IMO überflüssig
> ist.

Ueberspitzt gesagt koennte eine Racecondition auftreten.

Wenn deine *.dat *keinen* PHP Code enthaelt dann verwende anstelle von
include() bitte readfile().


Bezueglich des 'Problems' mit http://example.com/path/datei.dat schau
ob du das Verzeichnis 'path' per .htaccess schuetzen kannst bzw. dort
generell ein 'deny all' vorgeben kannst.

Gruss
Joerg

--
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025

Re: Include & Sicherheit

am 29.06.2006 11:38:37 von Andreas Randolf

Hallo Joerg,

> Wenn deine *.dat *keinen* PHP Code enthaelt dann verwende
> anstelle von include() bitte readfile().

Wo ist der Vorteil?

--
Gruß, Andreas

http://www.liegerad-fernweh.de

E-Mail bitte an die Antwortadresse und mit "Usenet" im Betreff

Re: Include & Sicherheit

am 29.06.2006 11:41:28 von Rainer Wahl

Oliver Block schrieb am 28 Jun 2006:

> Keinesfalls! gib mal folgendes in die Adresszeile Deines Browsers
> ein:
>

OK, dann sieht er den Quelltext der Datei. Aber das bringt ihm auch
nicht viel, da er keinen Code von außen einschleusen kann. Natürlich
kann er den Code studieren.

> Du solltest in Deinem Webserver sagen, daß er Dateien mit Endungen
> dat nicht beantwortet. Bei Apache machst Du das über eine
> Files-Direktive entweder in httpd.conf oder in .htaccess

Das allerdings ist ein guter Ansatz! Daran dachte ich noch nicht.


-=( Rainer )=-

--
Airbrush FAQ, Modellbau & more

Re: Include & Sicherheit

am 29.06.2006 12:05:22 von mail

Rainer Wahl wrote:
> OK, dann sieht er den Quelltext der Datei. Aber das bringt ihm auch
> nicht viel, da er keinen Code von außen einschleusen kann. Natürlich
> kann er den Code studieren.

Nach außen sichtbare Quelltexte sind nie eine tolle Sache. Was, wenn da
jetzt zufällig ein Datenbankpasswort drin steht?

Viele Grüße,
Matthias

Re: Include & Sicherheit

am 29.06.2006 13:23:54 von Rainer Wahl

Matthias Hu. schrieb am 29 Jun 2006:

> Nach außen sichtbare Quelltexte sind nie eine tolle Sache. Was,
> wenn da jetzt zufällig ein Datenbankpasswort drin steht?

Ja, schon klar und vollste Zustimmung. Nur in meinem konkreten Fall
wäre dies auch nicht schlimm, da er dann nur sähe, wie ich mein Menü
zusammenbaue und ihn das nicht einen Schritt weiter bringt. Der
Angreifer müßte fremden Code von außen einschleusen und daher meine
ursprüngliche Frage.


-=( Rainer )=-

--
Airbrush FAQ, Modellbau & more

Re: Include & Sicherheit

am 29.06.2006 13:23:54 von Rainer Wahl

Dirk Sohler schrieb am 29 Jun 2006:

> if ($zeige == 'wasauchimmer') {
> include('datei_fuer_wasauchimmer.php'); } elseif ($zeige ==
> 'wasanderes') { include('andere_datei.htm'); } elseif ($zeige ==
> 'nochwas') { include('nochwas.jpg'); } else {
> include('fehler.php') }

Mit der Prüfung gegen eine Whitelist liegt man zwar immer richtig, aber
reicht eine Prüfung mit file_exists nicht auch aus? Schließlich muß die
Datei dann lokal vorhanden sein um eingebunden zu werden und das
schafft ein Angreifer IMHO nur, wenn er den Webspace geknackt hat.

Dann allerdings hätte ich (bzw. mein Provider) _ganz_ andere Probleme!


-=( Rainer )=-

--
Airbrush FAQ, Modellbau & more

Re: Include & Sicherheit

am 29.06.2006 14:36:56 von Ulf Kadner

Andreas Randolf wrote:

>>Wenn deine *.dat *keinen* PHP Code enthaelt dann verwende
>>anstelle von include() bitte readfile().
>
> Wo ist der Vorteil?

Hat er doch geschrieben!
>>Ueberspitzt gesagt koennte eine Racecondition auftreten.

12.12. Was sind Race Conditions? Wie kann ich sie vermeiden?
http://www.php-faq.de/q/q-race-condition.html

Allerdings ist das wirklich nicht der Normalfall. Aber nur wer auch
derartige Besonderheiten beachtet fährt wirklich auf der sicheren Seite!

MfG, Ulf

Re: Include & Sicherheit

am 29.06.2006 15:37:34 von Joerg Behrens

Ulf Kadner schrieb:
> Andreas Randolf wrote:
>
>>> Wenn deine *.dat *keinen* PHP Code enthaelt dann verwende
>>> anstelle von include() bitte readfile().
>>
>> Wo ist der Vorteil?
>
> Hat er doch geschrieben!
> >>Ueberspitzt gesagt koennte eine Racecondition auftreten.
>
> 12.12. Was sind Race Conditions? Wie kann ich sie vermeiden?
> http://www.php-faq.de/q/q-race-condition.html
>
> Allerdings ist das wirklich nicht der Normalfall. Aber nur wer auch
> derartige Besonderheiten beachtet fährt wirklich auf der sicheren Seite!
>
> MfG, Ulf

Andreas wollte wissen warum ich Vorschlug readfile() zu benutzen
anstelle von include()/require(). Die beiden letzten Funktionen wuerden
PHP Code ausführen wenn sie welchen antreffen. Die Funktion readfile()
wuerde den Inhalt blind an den Client durchschieben ohne auf Code zu
evaluieren.

Das waere sicherer und ein bisschen schneller wahrscheinlich. Ersteres
ist hier aber wichtiger.

Gruss
Joerg

--
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025

Re: Include & Sicherheit

am 29.06.2006 16:31:27 von Andreas Randolf

Hallo Joerg,

> Andreas wollte wissen warum ich Vorschlug readfile() zu benutzen
> anstelle von include()/require(). Die beiden letzten Funktionen wuerden
> PHP Code ausführen wenn sie welchen antreffen.

Ah, danke! Bei festen Werten sollte demnach kein Sicherheitsrisiko
bestehen. Ich verwende folgendes:

--
Gruß, Andreas

http://www.liegerad-fernweh.de

E-Mail bitte an die Antwortadresse und mit "Usenet" im Betreff

Re: Include & Sicherheit

am 29.06.2006 17:27:50 von cg

wenn ich mich hier mal mit einklinken darf...

bin noch ziemlicher php-anfänger und habe mich
zwangsläufig (nachdem meine seite über unsauberes
includen gehackt wurde) mit dem thema beschäftigt
und mir folgendes zurechtgebastelt, damit in der
variablen keine externe url aufgerufen werden kann:

$seite = $_GET["seite"];

if (!$seite || ereg("[:]", $seite) || !@ include ($seite."_content.php")) {
include ("home_content.php");
}
?>

was halten die profis hier davon?

....jedenfalls ist meiner webseite seither
nichts mehr passiert.

viele grüße,
christian

Re: Include & Sicherheit

am 29.06.2006 17:29:55 von Norbert Melzer

Rainer Wahl schrieb:
> Dirk Sohler schrieb am 29 Jun 2006:
>=20
>> if ($zeige == 'wasauchimmer') { =20
>> include('datei_fuer_wasauchimmer.php'); } elseif ($zeige ==
>> 'wasanderes') { include('andere_datei.htm'); } elseif ($zeige ==
>> 'nochwas') { include('nochwas.jpg'); } else {
>> include('fehler.php') }=20
>=20
> Mit der Prüfung gegen eine Whitelist liegt man zwar immer richtig,=
aber=20
> reicht eine Prüfung mit file_exists nicht auch aus? Schließli=
ch muß die=20
> Datei dann lokal vorhanden sein um eingebunden zu werden und das=20
> schafft ein Angreifer IMHO nur, wenn er den Webspace geknackt hat.
>=20
> Dann allerdings hätte ich (bzw. mein Provider) _ganz_ andere Probl=
eme!

Ich sage zu diesem Punkt nur, das vor ein paar Monaten eine
Sicherheitslücke im Woltlab Burning Board 1.2 bekannt wurde, die ein=
em
Angreifer das uploaden von eigenem Code ermöglichte. Das ist weder
Schuld des Providers noch Meine gewesen (mal abgesehen davon, daß ic=
h
damals einem fremden Script Blind vertraut habe, aber aus Fehlern lernt
man :-) ).

Das ist für mich persönlich ein ganz klares Argument für W=
hitelists.
Denn wenn Du irgendwo in einem File-Upload, wie auch immer, eine PHP
Datei untergeschoben bekommst und die dann durch Parameter-Manipulation
von Deinem Script includet und ausgeführt wird, ist es schlichtweg z=
u Spät!

In meinem Fall wurden Gottseidank von den Angreifern "nur" die PHP und
Templatedateien gelöscht, Datenbankinhalte und File-Attachements hab=
en
sie mir "gelassen". Und das ausgerechnet zu einem Zeitpunkt wo ich
gerade die Domain samt Datenbestand übergeben wollte...

Re: Include & Sicherheit

am 29.06.2006 17:34:41 von thornythegod

[groebel media] christian groebel schrieb:

> > $seite = $_GET["seite"];
>
> if (!$seite || ereg("[:]", $seite) || !@ include ($seite."_content.php")) {
> include ("home_content.php");
> }
> ?>
>
> was halten die profis hier davon?

Anstelle des Profis antworte ich mal. ;)

Die Verwendung des @ ist ein ganz unsauberer Stil, den es unterdrückt
Fehlermeldungen. Es gibt genügend Funktionen (z.b. file_exist()) mit dem
man die Existenz der Datei überprüfen kann. Das wäre sinnvoller.

Gruß,
Torsten

Re: Include & Sicherheit

am 29.06.2006 17:38:23 von Norbert Melzer

[groebel media] christian groebel schrieb:
>
> > $seite =3D $_GET["seite"];
> =09
> if (!$seite || ereg("[:]", $seite) || !@ include ($seite."_content.php"=
)) {
> include ("home_content.php");
> }
> ?>
>=20
> was halten die profis hier davon?

Kein Profi, aber auf jeden Fall fällt mir das da auf:

8.2. Soll ich ereg() oder preg() verwenden?
http://www.php-faq.de/q/q-regexp-ereg.html

Ausserdem würde ich auf eine URL eher mit
~^(http[s]?|ftp|andereProtokolleBeiBedarf)://~

testen. Ist jetzt nur schnell aus dem Kopf gezimmert, die Tatsächlic=
he
Syntax kann natürlich abweichen.

Und wenn Du eh nur auf den Doppelpunkt testen willst, ist RegEx
overkill, da reichen die Stringfunktionen mehr als aus...

Re: Include & Sicherheit

am 29.06.2006 17:38:47 von thornythegod

Torsten Zühlsdorff schrieb:
> [groebel media] christian groebel schrieb:
>
>
>> >>$seite = $_GET["seite"];
>>
>>if (!$seite || ereg("[:]", $seite) || !@ include ($seite."_content.php")) {
>>include ("home_content.php");
>>}
>>?>
>>
>>was halten die profis hier davon?

Als Anmerkung zu mir selbst:

Wenn ich mich recht erinnere, kann man http auch als "http%3a%2f%2f"
codiert schreiben. Deine Überprüfung auf einen ":" ist somit umgehbar.

Gruß,
Torsten

Re: Include & Sicherheit

am 29.06.2006 17:41:13 von Norbert Melzer

Norbert Melzer schrieb:

> Ausserdem würde ich auf eine URL eher mit
> ~^(http[s]?|ftp|andereProtokolleBeiBedarf)://~
>=20
> testen. Ist jetzt nur schnell aus dem Kopf gezimmert, die Tatsächl=
iche
> Syntax kann natürlich abweichen.


Und aufgrund von Thorstens Einwand, dann wohl eher:

%3a%2f%2f
~^(http[s]?|ftp|andereProtokolleBeiBedarf)(:|%3a)(/|%2f){2}~

Re: Include & Sicherheit

am 29.06.2006 17:44:38 von Frank Schenk

[groebel media] christian groebel wrote:
> wenn ich mich hier mal mit einklinken darf...
>
> bin noch ziemlicher php-anfänger und habe mich
> zwangsläufig (nachdem meine seite über unsauberes
> includen gehackt wurde) mit dem thema beschäftigt
> und mir folgendes zurechtgebastelt, damit in der
> variablen keine externe url aufgerufen werden kann:
>
> > $seite = $_GET["seite"];
>
> if (!$seite || ereg("[:]", $seite) || !@ include ($seite."_content.php")) {
> include ("home_content.php");
> }
> ?>

Du prüfst nicht ob $_GET gefüllt ist.

Du verwendest ereg:
8.2. Soll ich ereg() oder preg() verwenden?
http://www.php-faq.de/q/q-regexp-ereg.html

ereg wird mit PHP 6 vorraussichtlich aus dem Standardpaket entfernt.

Du liest nicht das Handbuch:
> !@ include ($seite."_content.php")

http://de.php.net/manual/en/function.include.php

Because include() is a special language construct, parentheses are not
needed around its argument. Take care when comparing return value.

Du unterdrückst Fehlermeldungen.



Wie schon so oft hier genannt -> nutze eine Whitelist:

if(isset($_GET['page'])){
switch($_GET['page']){

case 'seite1':
include(...);
break;

case 'seite2':
include(...);
break;

default:
include(...);
break;
}
} else {
include(...);
}

Wobei sich bei vielen Dateien - wie schon bei einem anderen Thema
angemerkt - es sich empfiehlt, die Liste der Dateien in ein Configfile
zu schreiben.


gruß, Frank

Re: Include & Sicherheit

am 29.06.2006 17:55:08 von thornythegod

Norbert Melzer schrieb:

>>Ausserdem würde ich auf eine URL eher mit
>>~^(http[s]?|ftp|andereProtokolleBeiBedarf)://~
>>
>>testen. Ist jetzt nur schnell aus dem Kopf gezimmert, die Tatsächliche
>>Syntax kann natürlich abweichen.
>
>
> Und aufgrund von Thorstens Einwand, dann wohl eher:

Bitte ohne *h* ;)

> %3a%2f%2f
> ~^(http[s]?|ftp|andereProtokolleBeiBedarf)(:|%3a)(/|%2f){2}~

Wobei man wirklich auf eine Whitelist setzen sollte, da man nur selten
alle möglichen Protokolle im Kopf hat.
Letztlich ist die Menge der erlaubten Seiten ja bekannt und der Test
kann schnell in eine Funktion und eine Textdatei ausgelagert werden.
Zwar entsteht dadurch ein geringer Mehraufwand bei der Erweiterung der
Applikation, aber in Anbetracht der Sicherheit und der definierten
Schnittstelle, wo man pro neue Seite eine Zeile in eine Datei eintippt,
sollte das zu verkraften sein.

Gruß,
Torsten

Re: Include & Sicherheit

am 29.06.2006 18:15:56 von cg

ok, ich sehe, ich muß noch einiges lernen!
....aber das wußte ich ja eigentlich schon.

vielen dank für die vielen hinweise und tips,
werde mich damit intensiv auseinandersetzen.

viele grüße,
christian

Re: Include & Sicherheit

am 29.06.2006 19:49:01 von Knut Kohl

Hallo Rainer,

Rainer Wahl schrieb am 29. Jun 2006 in de.comp.lang.php.misc:

>> Du solltest in Deinem Webserver sagen, daß er Dateien mit Endungen
>> dat nicht beantwortet. Bei Apache machst Du das über eine
>> Files-Direktive entweder in httpd.conf oder in .htaccess

> Das allerdings ist ein guter Ansatz! Daran dachte ich noch nicht.

Ein anderer Ansatz wäre, wenn ALLE Anfragen über z.B. index.php geleitet
werden:

in index.php:

define( 'CORRECT_LOADED', 1 );

in JEDER includierten Datei:

if (!defined('CORRECT_LOADED')) die('Soooo aber nicht!');

oder ein Redirect auf die index.php

> -=( Rainer )=-

Knut

--

Newsoffice.de - Die Onlinesoftware zum Lesen und Schreiben im Usenet

Re: Include & Sicherheit

am 29.06.2006 20:08:47 von unknown

Post removed (X-No-Archive: yes)

Re: Include & Sicherheit

am 29.06.2006 20:11:01 von unknown

Post removed (X-No-Archive: yes)

Re: Include & Sicherheit

am 29.06.2006 22:25:54 von Rainer Wahl

Dirk Sohler schrieb am 29 Jun 2006:

> index.php?include=../../geheimedatei.blubb
>
> include($include)
>
> "../../geheimedatei.blubb" ist lokal Vorhanden. Und nun?

Verstehe ich nicht.
Wie soll geheimedatei.blubb auf meinen Webspace gelangen? Also wie soll
jemand anders als ich die geheimedatei.blubb auf den Server kopieren?
Mit "www.evilispresent.hell/makesomethingevil.destroy" anstatt
"../../geheimedatei.blubb" könnte man ja eine fremde Datei
einschmuggeln, aber die ist dann bei file_exists nicht auffindbar, bzw.
nicht lokal und wird dann auch nicht includiert.


-=( Rainer )=-

--
Airbrush FAQ, Modellbau & more

Re: Include & Sicherheit

am 29.06.2006 23:02:52 von Matthias Wuebbeling

Rainer Wahl wrote:
> Dirk Sohler schrieb am 29 Jun 2006:
>
>> index.php?include=../../geheimedatei.blubb
>>
>> include($include)
>>
>> "../../geheimedatei.blubb" ist lokal Vorhanden. Und nun?
>
> Verstehe ich nicht.
> Wie soll geheimedatei.blubb auf meinen Webspace gelangen? Also wie soll
> jemand anders als ich die geheimedatei.blubb auf den Server kopieren?
> Mit "www.evilispresent.hell/makesomethingevil.destroy" anstatt
> "../../geheimedatei.blubb" könnte man ja eine fremde Datei
> einschmuggeln, aber die ist dann bei file_exists nicht auffindbar, bzw.
> nicht lokal und wird dann auch nicht includiert.

Zumindest, solange du nicht anbietest, Dateien hochzuladen, bspw. für
Avatare, Bilder oder ähnliches.

Sobald du das erlaubst und auch hierbei nicht vernünftig prüfst, kann
das gravierende Probleme geben.

lieben Gruß,
Matze

Re: Include & Sicherheit

am 30.06.2006 06:01:09 von unknown

Post removed (X-No-Archive: yes)

Re: Include & Sicherheit

am 30.06.2006 10:30:04 von thornythegod

Dirk Sohler schrieb:

>>Kleiner Vorschlag: Speichere dein "zeige" in einer Textdatei und die
>>Datei zum includieren daneben, lasse ein parse_ini_file() drüber laufen
>>und benutze dann den erzeugten Array zum includieren. Das spart erstens
>>viel Code und zweitens erhöht es die Lesbarkeit und Wartbarkeit. :)
>
> Ich sags ja, das ist stark vereinfacht. Da drumherum gehört noch ein Menü,
> dass das ganze dann aufruft. Der if-Teil ist noch umfangreicher, da wird
> noch der Titel in eine Variable geschrieben, und anderes gemacht.

Das ist nichts, dass man nicht auslagern, in Funktionen packen und
optimieren kann, um es wartbarer zu halten ;)

Gruß,
Torsten

Re: Include & Sicherheit

am 30.06.2006 16:48:45 von Rainer Wahl

Dirk Sohler schrieb am 30 Jun 2006:

> Es geht hier nicht um den Webspace. Mal angenommen, deinem
> Webspace liegt in /home/username/htdocs, was hindert dich daran,
> ../../etc/systemdateixyz (also /etc/systemdateixyz) zu
> inkludieren? PHP macht keinen unterschied zwischen "liegt im
> Webspace-Verzeichnis" und "irgendwo auf dem Server".

Vielleicht bin ich ja ein bißchen blöd, aber ich verstehe immer noch
nicht was du sagen willst.

Wieso sollte ich etwas inkludieren, was gar nicht zu meinem Webspace
gehört? Und wenn jemand fremdes mir schaden will kommt er immer nicht
zum Zug, denn "mein" file_exists prüft ob die Datei in meinem
Verzeichnis liegt und nicht irgendwo auf dem Server meines Providers.

Außerdem wundert es mich etwas, daß das PHP meines Providers soz. unter
meine Grenze meines Roots wandern kann. Greife ich via FTP auf meinen
Webspace zu, gelange ich nur soweit ins Root retour, wie es mich mein
Provider läßt (respektive er seinen Apache soweit konfiguriet hat).
Mein Root ist ein Unterverzeichnis auf dem Providerserver und weiter
retour komme ich nicht. PHP kann das?


-=( Rainer )=-

--
Airbrush FAQ, Modellbau & more

Re: Include & Sicherheit

am 30.06.2006 18:14:05 von Niels Braczek

Rainer Wahl schrieb:

> Mein Root ist ein Unterverzeichnis auf dem Providerserver und weiter=20
> retour komme ich nicht. PHP kann das?

Jein. Üblicherweise lässt dich dein Provider nicht weiter zurück.
Allerdings hast du normalerweise dein DOCUMENT_ROOT in einem Verzeichnis
innerhalb deines Webspaces (zB htdocs-Verzeichnis), damit du Bereiche
zur Verfügung hast, die nicht per HTTP zugänglich sind (zB. log). Die=
se
Bereiche sind via PHP problemlos zu erreichen, obwohl sie für HTTP nich=
t
existieren.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------