Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Include-Sperre    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
CodeFetch
Mitglied
Neuling


Dabei seit: 11.08.2007
Herkunft: keine Angabe
Posts: 9
     Include-Sperre Zitat | Bearbeiten

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.");



11.08.2007, 12:18 Profil | PM | E-Mail  
Guest
Mitglied
Gruenling


Dabei seit: 30.07.2007
Herkunft: keine Angabe
Posts: 17
      Zitat | Bearbeiten

Wie wärs mit

 PHP 
1:
2:
3:
4:
5:
6:
<?php
$servernames 
"blabla.de|me.blabla.de";
if(!
eregi($servernames$_SERVER["SERVER_NAME"])){
  die(
"Du hast kein Recht dieses Script zu includen");
}
?>


lg


12.08.2007, 21:18 Profil | PM | E-Mail  
Teralios
Moderator
Perfekter User


Dabei seit: 18.09.2005
Herkunft: Berlin
Posts: 2542
      Zitat | Bearbeiten

Zitat:
Orginal von Guest
Wie wärs mit

 PHP 
1:
2:
3:
4:
5:
6:
<?php
$servernames 
"blabla.de|me.blabla.de";
if(!
eregi($servernames$_SERVER["SERVER_NAME"])){
  die(
"Du hast kein Recht dieses Script zu includen");
}
?>


lg

Da gibt es viele Methoden. Andere wären z.b auch den Direkten Aufruf abfragen, und dann mit Die hantieren.



12.08.2007, 21:20 Profil | PM | E-Mail  
CodeFetch
Mitglied
Neuling


Dabei seit: 11.08.2007
Herkunft: keine Angabe
Posts: 9
      Zitat | Bearbeiten

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

http://example.com/~david/includewas.php

die Datei

http://example.com/~chris/config.php

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?


16.08.2007, 14:12 Profil | PM | E-Mail  
BigBang
Mitglied
Neuling


Dabei seit: 28.09.2018
Herkunft: keine Angabe
Posts: 3
      Zitat | Bearbeiten

Zitat:
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.


Danke, Gruß


28.09.2018, 08:12 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Include-Sperre   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz