Siggi: Der Türsteher für php-Dateien

Beitrag lesen

Hallo,

Ich arbeite gerade an einem Projekt und irgendwie frage ich mich bei jedem Projekt erneut nach meinem Programmierstil.

Diesmal habe ich folgendes vor und möchte euch bitten diese Methode auf Sicherheit zu bewerten.

Ich prüfe $_SERVER["REDIRECT_URL"] und werte den Inhalt auf Kompatibilität.

meinprojekt.de/
=> leer (Wenn Leer dann Startseite)

meinprojekt.de/anything.htm
=> anything.htm

Überprüfe anything.htm in der Datenbank

anything.htm exisitert

<? include(anything.inc.php); ?>

Also wenn die angefragte Seite Existiert kann sie auch angezeigt werden. Es könnte ja auch sein das jemand

meinprojekt.de/ich_will_dich_hacken

eingibt und dann passiert folgendes

=> ich_will_dich_hacken

Überprüfe ich_will_dich_hacken in der Datenbank

ich_will_dich_hacken exisitert nicht

<? die("Fehler"); ?>

..Soweit, so gut!

Jetzt geht es mir um die Sicherheit der includierten, tatsächlich existierenden Dateien wie zB die anything.inc.php.
Die kann man, wenn man es herausgefunden hat, direkt aufrufen.
Also dachte ich mir einen Türsteher einzubauen.
Und zwar in die Hauptdatei index.php, die alle includes (Somit auch functions.inc.php und Die Seiteninhalte eben) aufruft.

.htaccess:
----------
ErrorDocument 404 /absolut/index.php

index.php:
----------
<?
...
DEFINE(SECURITY,1);
...
include("functions.inc.php"); # Für Funktionen
include("redirect.inc.php");  # Für die Interpretation von .htaccess
...
include($ergebnis_der_auswertung);
?>

anything.inc.php
----------------
<?
if(SECURITY == 0) die("Soo kommst hier nicht rein!");
print "Yuhu";
?>

Der Hacker kann also eingeben was er will

anything.inc.php?was_auch_immer=es_geht_gar_nichts

Wenn diese Include-Datei jedoch über index.php bzw. über .htaccess aufgerufen wird klappt es.
auch das aufrufen von Inject-Variablen wird damit unterbunden
zB. meinprojekt.de/uebers_menue_aufgerufen&variable=wasauchimmer funktioniert nicht!

Was haltet Ihr von dieser Methode? Fraglich?, Bekannt?, Sicher?

Danke Siggi