zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Dateizugriff von PHP-Skripten intern einschränken?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 19.07.2010, 20:28
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.01.2009
Beiträge: 103
GrayFox befindet sich auf einem aufstrebenden Ast
Standard Dateizugriff von PHP-Skripten intern einschränken?

Vielleicht kann mir jemand mit folgendem Anliegen weiterhelfen:

Ich möchte gewisse Dateien bzw. Ordner (z.B. die config.xml oder den System-Ordner meiner Anwendung) vor unbefugtem Zugriff schützen. Ich weiß, dass ich per .htaccess den Zugriff über den Browser unterbinden kann. Aber ist es auch möglich interne Zugriffe, die über PHP-Skripte erfolgen, zu unterbinden?

Z.B., dass alle PHP-Skripte, die im Ordner "domain.tld/modules/" liegen, keinen Zugriff auf "domain.tld/system/libs" haben.

Der Hintergrund ist der, dass das Konzept meiner Anwendung es vorsieht, dass Administratoren PHP-Skripte als Modul in die installierte Anwendung integrieren können.

Um zu verhindern, dass durch solch ein Modul unfreiwillig oder absichtlich das System oder die DB manipuliert oder gar beschädigt wird, möchte ich einen direkten Zugriff auf das System unterbinden und als Alternative gewisse APIs zur Verfügung stellen. (Es ist mir natürlich klar, dass dadurch die Möglichkeiten des Entwicklers eingeschränkt werden.)

Könnte so etwas über eine Art "deny from domain.tld/modules/" in der .htaccess realisiert werden?

Oder soll ich mir die Arbeit sparen und dem Administrator die Verantwortung aufbürden?

EDIT: Wobei ich gerade überlege, dass dieser Schutz wohl sinnlos wäre, wenn man im Vorfeld schon die ganzen PHP-Funktion über ein "include" in der index.php einbindet.

Geändert von GrayFox (19.07.2010 um 21:06 Uhr) Grund: Rechtschreibfehler korrigiert.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 19.07.2010, 20:49
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Du kannst über eine Konstante abfragen, ob das Skript aufgerufen werden darf, wenn nicht, dann passiert eben einfach nichts.
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 19.07.2010, 20:51
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.01.2009
Beiträge: 103
GrayFox befindet sich auf einem aufstrebenden Ast
Standard

Ich verstehe im Groben, was du sagen möchtest, aber könntest du kurz erläutern, was du genau meinst?
Mit Zitat antworten
  #4 (permalink)  
Alt 19.07.2010, 21:08
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Jo, kann ich

Du hast ja sicherlich ein Skript, in welches Die einzelnen Seiten eingebunden werden. Zum Beispiel die index.php.
In dieser Datei definerst du dann eine Konstante, dass die index.php von Backend geladen wurde. In den Modulen fragst du dann die entsprechende Konstante wieder ab. Ist sie nicht gesetzt, so lässt du das Skript einfach abbrechen und die Module werden nicht geladen. Ist sie gesetzt, dann werden die Module geladen und der Administrator kann administrieren.
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #5 (permalink)  
Alt 19.07.2010, 21:26
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.01.2009
Beiträge: 103
GrayFox befindet sich auf einem aufstrebenden Ast
Standard

Danke für deine Antwort

Eine Frage bleibt - Aber wie verhindere ich, dass diese Konstante in einem Modul nachträglich definiert wird?

Es ist ja so geplant, dass die Module aus einer externen Quelle stammen und per 'Setup' ins installierte System eingebunden werden. Die ursprüngliche Anwendung wird frei verfügbar sein.

Dadurch kann jemand, der Schaden anrichten will, einfach die Konstante im Source Code nachschauen und Sie in sein Modul implementieren.

Ich versuche mit einer Skizze meine Vorstellung etwas zu veranschaulichen:

Code:
----------------
               |
[system] <-> [API] <-> [Modul] <-> Nutzer
               |
----------------
Eine kleine Anmerkung: Das soll keine "Bastel dir deine eigene Websofware"-Anwendung werden. Die Anwendung beschränkt sich schon auf einen bestimmten Anwendungsbereich - nur möchte ich die Anwendung sehr modular(isch?) gestalten.

Geändert von GrayFox (19.07.2010 um 21:31 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 19.07.2010, 22:09
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Das kannst du damit nicht verhindern, du kannst noch den Pfad prüfen, dafür sorgen, dass die Module auf dem selben Server liegen, wie das System und so Späße.
Du musst halt auch bei modularer Entwicklung die Sicherheit wahren, ich würde das sowieso kapseln, so dass Module nicht an "Systemdaten" wie den Datenbanknamen, den Server und sowas kommen.
Du solltest dir eine Möglichkeit ausdenken, dass Module nicht an sicherheitsrelevante Daten wie Passwörter kommen.
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #7 (permalink)  
Alt 19.07.2010, 22:12
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.01.2009
Beiträge: 103
GrayFox befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Praktikant Beitrag anzeigen
Du musst halt auch bei modularer Entwicklung die Sicherheit wahren, ich würde das sowieso kapseln, so dass Module nicht an "Systemdaten" wie den Datenbanknamen, den Server und sowas kommen.
Du solltest dir eine Möglichkeit ausdenken, dass Module nicht an sicherheitsrelevante Daten wie Passwörter kommen.
Das versuche ich ja

Denn mir sind diese Risiken durchaus bewusst, deshalb habe ich gehofft, dass vielleicht hier jemand ein ähnliches Problem erfolgreich lösen konnte

Deshalb versuche ich, die Module über APIs ans System anzubinden. Im schlimmsten Fall unterbinde ich die aktive Nutzung von PHP und beschränke ein Modul allein auf HTML / CSS / JS (+ eingeschränktes XMLHttpRequest für die APIs)

Geändert von GrayFox (19.07.2010 um 22:16 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 22.07.2010, 12:46
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 29.07.2005
Beiträge: 1.073
xm22 befindet sich auf einem aufstrebenden Ast
Standard

Du kannst das nicht verhindern. Du kannst es höchstens versuchen, einzuschränken. Aber wenn jemand oder irgendein Skript vor hat, an Daten zu kommen, dann wird sie sie durch einen einfachen include auch bekommen.. Und selbst ohne das würde ein einfaches Auslesen der Datei auf Dateisystemebene sämtliche Einschränkungen unterlaufen.

Das ist ja auch der Grund, warum es so gefährlich ist, wenn es irgend jemand schafft, eigenen PHP-Code in einen Server einzuschleusen..
__________________
... Meine Meinung

Geändert von xm22 (22.07.2010 um 12:49 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 22.07.2010, 19:23
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.01.2009
Beiträge: 103
GrayFox befindet sich auf einem aufstrebenden Ast
Standard

Ein 'include' von PHP-Dateien könnte man mit den Rückgabewerten von "debug_backtrace" einschränken bzw. das gleiche Schema könnte man bei selbstgestrickten Systemfunktionen anwenden.

Aber ein 'include' von XML Dateien lässt sich wohl nur schwer, bis gar nicht, verhindern.

Andererseits kann man wohl auch nicht verhindern, wenn jemand eine Datei mit Schadcode in ein 'sicheres' Verzeichnis kopiert und dadurch eine Systemdatei ersetzt

Aber dann muss man bei den Addons / Hacks für die ganzen Webysteme (Foren / Blogs etc.) auch darauf vertrauen, dass alles mit rechten Dingen zugeht.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
UNC Dateizugriff per PHP LordShadow Serveradministration und serverseitige Scripte 13 11.10.2009 13:35
php Seiten online stellen online Serveradministration und serverseitige Scripte 7 27.03.2009 13:13
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:13 Uhr.