Archiv verlassen und diese Seite im Standarddesign anzeigen : verhindern, dass inc-dateien direkt geöffnet werden
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
<?php
function check_datei () {
IF ( eregi('inc.php',$_SERVER['PHP_SELF']) ) {
die();
}
}
?>
So zum Beispiel!
Oder ganz einfach mit htaccess ;)
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.
Man kann die include Dateien auch ausserhalb des Webroots anlegen und somit sind sie auch vor unauthorisiertem Zugriff geschützt
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 !
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();
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
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.
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
das beste wäre, er meldet sich mal zurück !
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.
|