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