Verzeichnisschutz und PHP-Zugriff ?!?
Sven Deckner
- sonstiges
Hallo Forum!
Ich habe hier eine kleine Problemstellung bei der ich mal einige Denkanstöße bräuchte:
Ich habe ein Verzeichnis /xyz mit .htaccess und so geschützt. In dem Verzeichnis liegen PHP Scripte, die eine Mailingliste administrieren und verwalten.
Nun sollen sich ja auch Leute in diese Mailingliste eintragen. Dafür müssen ja Daten aus z.B. einem Formular an ein, aus der Mailingliste stammendes, verwaltendes Script übergeben werden. Leider greift da der Verzeichnisschutz ;) -> kein Eintrag ohne Passwort möglich ;))
Der muss aber sein, sonst spielt mir ein sehr findiger User an der Datenbank rum (klar Password gibt es aber naja ...).
Habt ihr irgendwelche Denkansätze, was man da evtl. wie machen könnte? Wäre wirklich dankbar ....
SvenniD
Hi,
Nun sollen sich ja auch Leute in diese Mailingliste eintragen. Dafür müssen ja Daten aus z.B. einem Formular an ein, aus der Mailingliste stammendes, verwaltendes Script übergeben werden. Leider greift da der Verzeichnisschutz ;) -> kein Eintrag ohne Passwort möglich ;))
warum verlegst Du dieses Script dann nicht in ein anderes Verzeichnis?
Cheatah
Hello,
warum verlegst Du dieses Script dann nicht in ein anderes Verzeichnis?
...oder baust einen Wrapper für das empfindliche Script? Sammel in dem eigentlichen Script nur die Funktionen, die Du benötigst und dann bindest Du es mit require_once() in das andere ein, das auch HTML-Ausgaben tätig und die Verbindung zum User herstellt. Das Require schert sich nicht um .htaccess und außerdem wird (im gegensatz zu include()) bei einem Fehler auch keine Fehlerverfolgung ins eingebundene Script vorgenommen.
http://de3.php.net/manual/de/function.require-once.php
Liebe Grüße aus http://www.braunschweig.de
Tom
HAllo Tom!
...oder baust einen Wrapper für das empfindliche Script?
Naja, das Script zum Senden der Daten ist nur eine HTML mit einem Formular, dass die Daten an das Konfig-Script für die Mailingliste sendet. In dem Mailinglisten Verzeichnis sind noch andere Scripte, Templates etc. drin - die müssen alle mit geschützt werde.
Schau ich mir aber mal an, am Ende schicke ich die Daten denn eben nicht mit einem Formular sondern direkt mit PHP Code an das andere Script.
SvenniD
Hello,
Schau ich mir aber mal an, am Ende schicke ich die Daten denn eben nicht mit einem Formular sondern direkt mit PHP Code an das andere Script.
Ich ahne, dass Du eventuell eine falsche Vorstellung von der Funktionsweise von PHP bzw. dem im Web verwendeten Client-Server-Prinzip hast.
Der Client ruft eine Ressource auf dem Server auf.
Dieser besorgt über den HTTP-Deamon die Ressource.
Dabei hat er einige Regeln zu bechten. Eine ist z.B. die Auswertung von .htaccess-Dateien und vergleichbaren Konfigurationseinstellungen auf dem Server. Im "lokalen" Dateisystem (NFS ist z.B. auch möglich) muss er die Zugriffsrechte für sich beachten. Und dann hat er noch einige Erweiterungen eingetragen. Wenn z.B. eine Ressource auf ".php" endet (das sit Einstellungssache) oder aus einem speziellen "Verzeichnis"[1] geholt werden soll (/cgi/bin/), dann übergibt er die beschafften Daten z.B. an den PHP-Parser oder den PERL-Interpreter. Diese werten die Daten dann nach ihren eigenen Regeln aus und geben normalerweise ein Ergebnis an den Webserver (httpd) zurück. Dieser kann das Ergebnis dann ausliefern.
Die Parser und Interpreter haben ihrerseits wieder eigene Regeln zu beachten. Teilweise addieren sich sind die Regeln zu denen des Webservers aber teilweise eröffnen sie auch Nebenwege und "Hintertüren". So dürfen die Prozesse aus diesen Scripten z.B. an .htaccess vorbei direkt auf Verzeichnisse des eingebundenen Filesystems zugreifen.
Fällt nun ein solcher Prozess aus, dann würden ggf. die Ressourcen ungeparst, also im Rohformat an den Client ausgeleifert werden. Da der Prozess aber nicht angestoßen wurde, sind die dazugeladenen Ressourcen oder Scripte nicht im ursprünglich aufgerufenen enthalten.
Das ist das Stückchen Sicherheit, das Du suchst.
Ich hoffe, ich ahbe Dir jetzt nicht Dinge erzählst, die Du schon lange wusstest und auch, dass ich nicht soviele Darsatellungsfehler drin habe...
;-)
Wir werden sehen.
[1] in der URL der Ressource ist dieser Pfad enthalten...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Cheatah!
Nun sollen sich ja auch Leute in diese Mailingliste eintragen. Dafür müssen ja Daten aus z.B. einem Formular an ein, aus der Mailingliste stammendes, verwaltendes Script übergeben werden. Leider greift da der Verzeichnisschutz ;) -> kein Eintrag ohne Passwort möglich ;))
warum verlegst Du dieses Script dann nicht in ein anderes Verzeichnis?
Ja, das war auch meine erste Idee. Also das Formular sieht am Anfang wie folgt aus:
<form action="/liste03/setup.php" method="post" name="formula" target="_self">
Dann werden Noch Name, Mail und so übergeben. Wenn ich dann auf submit klicke, kommt Access Denied ... naja, der Verzeichnisschutz eben.
Damit scheint es nicht zu funktionieren ...
Sven