|
|||
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. |
Sponsored Links |
Sponsored Links |
|
||||
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! |
|
|||
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 | ---------------- Geändert von GrayFox (19.07.2010 um 21:31 Uhr) |
|
||||
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! |
|
|||
Zitat:
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) |
|
|||
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) |
|
|||
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. |
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ä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 |