Falls ihr wollt, dass eine eurer Dateien entweder nur includet werden, oder nicht von allen Scripten includet werden darf, helfen euch folgende Schnipsel:
Hier der Einzeiler für das nur includen:
PHP
1:
2:
if ($_SERVER['SCRIPT_FILENAME'] == __FILE__) die("Sie dürfen diese Datei nur includen!");
Nur bestimmte Scripte dürfen includen:
PHP
1:
2:
3:
$scripts=array("/", "/index.php"); # Hier die Scripte einfügen
if ($_SERVER['SCRIPT_FILENAME'] != __FILE__ && !in_array($_SERVER['REQUEST_URI'], $scripts)) die("Die Datei ".substr($_SERVER['REQUEST_URI'], 1)." ist nicht zum includen befugt.");
Du hast da ne kleine Sicherheitslücke...
Falls du eine Domäne wie erzgebirge.de erlaubst, kann jemand mit der Seite gebirge.de auch zugreifen... Bei den meisten Seiten ist es ja egal, da sich sowieso keiner die Mühe macht... Aber bei größeren Seiten ist es nicht so prickelnd... Zum Beispiel könnte Bay.com auf eBay.com zugreifen...
Lösungsvorschlag:
PHP
1:
2:
3:
4:
<?php
$servernames = "blabla.de|me.blabla.de";
if(!in_array($_SERVER["SERVER_NAME"], explode("|", $servernames))) die("Du hast kein Recht dieses Script zu includen");
?>
Das Prob an deinem Script ist, dass es auch nur funktioniert, wenn die website auf dem gleichen Server ist...
Sonst kann man ja sowieso net includen...
Da wär ja meine Methode mit dem nur-includen wieder nützlich.
Das nächste wäre, dass es nicht funktionieren würde wenn man es als cgi ausführen würde und dass es nicht funktioniert wenn mehrere leute eine Domain nutzen würden. Also könnte
includen, obwohl es zwei verschiedene Leute sind, die beide auf dem gleichen Rechner sind.
Natürlich ist das Problem an meinem Script, dass es keinen Schutz gegen angreifer von dem gleichen Server hat... Also wenn ich zum beispiel eine Datei habe die mein Scriplet benutzt und nur der /index.php erlaubt sie zu includen, könnte http://seiteaufdemserver.de/index.php das script genauso includen wie http://andereaufdemserver.de/index.php ...
Also müsste man unsere Scripte kombinieren...
Mir ist das erst später aufgefallen... Kann ich meinen Beitrag eigentlich editieren? Wird er dann auch auf der Seite verändert?
Orginal von CodeFetch
Falls ihr wollt, dass eine eurer Dateien entweder nur includet werden, oder nicht von allen Scripten includet werden darf, helfen euch folgende Schnipsel:
Hier der Einzeiler für das nur includen:
PHP
1:
2:
if ($_SERVER['SCRIPT_FILENAME'] == __FILE__) die("Sie dürfen diese Datei nur includen!");
Nur bestimmte Scripte dürfen includen:
PHP
1:
2:
3:
$scripts=array("/", "/index.php"); # Hier die Scripte einfügen
if ($_SERVER['SCRIPT_FILENAME'] != __FILE__ && !in_array($_SERVER['REQUEST_URI'], $scripts)) die("Die Datei ".substr($_SERVER['REQUEST_URI'], 1)." ist nicht zum includen befugt.");
Hallo!
Ich kann doch beide Restriktionen einfach nacheinander kombinieren, oder?
"Sie dürfen diese Datei nur includen!" erhalte nicht nur beim Direktaufruf der inc.php-Datei, sondern auch nach dem "Include" aus einer anderen php-Datei heraus.