Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
verhindern, dass inc-dateien direkt geöffnet werden [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
verhindern, dass inc-dateien direkt geöffnet werden


 
syco23
16-03-2005, 02:54 
 
Hallo,

wie verhindere ich am besten dass include-dateien direkt geöffnet werden.

ich stelle mir eine abfrage in der art

if (echter_dateiname == aufgerufene_datei) die();

vor. aber wie finde ich den echten dateinamen raus?

Gruß,
syco23

 
xManUx
16-03-2005, 03:07 
 
<?php

function check_datei () {
IF ( eregi('inc.php',$_SERVER['PHP_SELF']) ) {
die();
}
}

?>


So zum Beispiel!

 
Foggy
16-03-2005, 06:57 
 
Oder ganz einfach mit htaccess ;)

 
loci
16-03-2005, 09:44 
 
wieso ueberhaupt include dateien, welche php-code enthalten mit .inc und nicht sinnvollerweise richtig mit .php bezeichnen?
dann wuerde sich das problem nicht ergeben, da die funktionen innerhalb der datei ohne aufruf auch nicht ausgefuehrt werden.
ergebnis: eine leere anzeige - so wie gewuenscht.

 
frabron
16-03-2005, 11:57 
 
Man kann die include Dateien auch ausserhalb des Webroots anlegen und somit sind sie auch vor unauthorisiertem Zugriff geschützt

 
xManUx
16-03-2005, 12:33 
 
Original geschrieben von loci
wieso ueberhaupt include dateien, welche php-code enthalten mit .inc und nicht sinnvollerweise richtig mit .php bezeichnen?
dann wuerde sich das problem nicht ergeben, da die funktionen innerhalb der datei ohne aufruf auch nicht ausgefuehrt werden.
ergebnis: eine leere anzeige - so wie gewuenscht.


dateiname.inc.php !

 
bpieper
16-03-2005, 14:38 
 
in der hauptdatei define('SOME_SPECIAL',true);


in den include dateien if (!defined('SOME_SPECIAL')) {
header ('HTTP/1.1 404 Not Found');
echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n"
. "<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n"
. "The requested URL " . $PHP_SELF . " was not found on this server.<p>\n<hr>\n"
. $_SERVER['SERVER_SIGNATURE'] . "</body></html>";
exit;
}

oda schlicht die();

 
asp2php
16-03-2005, 14:44 
 
bpieper, du kannst prüfen was du willst, es nützt nichts, wenn die Datei dateiname.inc heißt und .inc nicht - durch Einstellung von Apache/IIS/... - geparst wird

 
bpieper
16-03-2005, 17:21 
 
die include dateien heissen whatever.inc.php

 
penizillin
16-03-2005, 17:25 
 
bpieper
dann brauchst du auch keine konstante o.ä., denn üblicherweise beinhalten include dateien nur funktionen- und klassendeklarationen ohne jegliche ausgabe.

 
bpieper
16-03-2005, 18:16 
 
was syco in den include dateien drin stehen hat kann ich so nicht erkennen. ich denke er wird wissen ob er ausgaben macht oder nicht und dann einen der vorschläge benutzen

 
xManUx
16-03-2005, 18:56 
 
das beste wäre, er meldet sich mal zurück !

 
syco23
16-03-2005, 23:03 
 
function check_datei () {
IF ( eregi('inc.php',$_SERVER['PHP_SELF']) ) {
die();
}
}
diese Methode gefällt mir am besten :)

die Dateinamen enden natürlich auf inc.php

es sind auch einige darunter, die direkt code ausgeben und auch gewisse aufgaben ausfürhen wie z.B. Bilder speichern, header, etc.

htaccess wäre auch eine gute möglichkeit.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:10 Uhr.