Skriptaufrufende Instanz

AppleSiebi

Mitglied
Thread Starter
Dabei seit
22.06.2007
Beiträge
32
Reaktionspunkte
0
Liebe Forums-User,

ich bin absoluter Anfänger in PHP/MySQL und möchte dennoch möglichst geschickt anfangen. Alles Notwendige liegt auf meinem Server in meinem Netz.

An sich funktioniert PHP und auch die Datenbank ist ansprechbar.

Um den Aufbau und Inhalt meiner geplanten Web-Site von vornherein gut zu strukturieren, dachte ich an ein Verzeichnis, welches die HTML-Seite(n) enthält. Diese HTML-Seiten sollen auf PHP-Skripte zugreifen - z.B. mit form action post... . Diese PHP-Skripte sollen wiederum in Unterverzeichnissen liegen, damit die gesamte Veranstaltung einer gewissen Struktur genügt und die Übersichtlichkeit gewahrt wird.
Habe ich eben so auch angefangen und ein einfaches Mail-Formular wird angezeigt und dieses Formular ruft auch das zugehörige Skript im Unterverzeichnis auf. Funktioniert auch.
Nun wollte ich zur Sicherheit diese Skript-Verzeichnisse mit Hilfe einer .htaccess-Datei vor unerlaubtem Zugriff schützen. Der Inhalt der .htaccess-Datei erlaubt nur dem Server selbst Zugriff auf die Skript-Verzeichnisse. Funktioniert auch.
Wenn ich nun aber von einem x-beliebigen Client die HTML-Seite mit dem Mail-Formular aufrufe, wird diese dargestellt aber beim Aufruf des Skriptes eben durch die Seite, wird der Zugriff verweigert.
Aufrufende Instanz ist der die HTML-Seite darstellende Client und nicht der Server, auf dem die HTML-Seite ruht. Davon war ich aber eigentlich ausgegangen.
Habe ich hier einen Denkfehler oder ist es ein Konfigurationsproblem.....

Für jede Hilfe dankbar

Siebi

PS: sollte es hier bereits umfangreiche Hilfe zu diesem Punkt geben, so bitte ich um Nachsicht. Ich habe es nicht gefunden
 
AW: Skriptaufrufende Instanz

Nein, auf das Skript greift der Server zu, genauer gesagt der Benutzer, unter dem der Server läuft, i.d.R www oder _www.
Funktioniert es denn, wenn Du die .htaccess vorübergehend umbenennst und damit deaktivierst?
 
AW: Skriptaufrufende Instanz

Da der Client Zugriff auf das Skript benötigt, kannst Du den Server nicht so konfigurieren, dass er diesen verbietet.
Der Server führt den Inhalt der Skriptdatei ja aus, womit zumindest Dein Quelltext hinreichend geschützt sein sollte.
 
AW: Skriptaufrufende Instanz

-- Blödsinn entfernt.

Vielleicht kannst Du mal den Formularteil der HTML Seite posten und den Code des Scriptes, die Ordner-/Dateistruktur und den Inhalt der .htaccess. Vorher aber bitte prüfen, ob das Skript läuft, wenn die .htaccess Datei deaktiviert ist.

Meine Vermutungen sind, entweder
- unzureichend gesetzte Zugriffsrechte
- eine fehlerhafte .htaccess Datei
- ein Fehler im Skript
- ein Fehler in der Formularseite (eher unwahrscheinlich)
 
Zuletzt bearbeitet:
AW: Skriptaufrufende Instanz

Guten Morgen,

schon mal vielen Dank für die Unterstützung. Ich kann mich leider jetzt erst zurückmelden, da jetzt auch noch mein Client streikte. Aber wir haben uns wieder vertragen ;-)

So, die Ordnerstruktur ist simpel:

es gibt einen "Ausgangsordner", in dem liegt die HTML-Datei - ein einfaches Mailer-Formular.
Unterhalb des "Ausgangsordners" liegt ein Verzeichnis namens /Scripts. In diesem liegt das Skript in einer Datei "mailer.php". Wenn ich die .htaccess-Datei entferne, funktioniert alles wunschgemäß. Wenn ich die .htaccess-Datei einfüge, ist der Zugriff nicht mehr möglich. Dabei muss man sich "möglich" so vorstellen:
Rufe ich die HTML-Seite und daraus folgend das Skript vom Server (Safari) direkt auf, läuft es wunderbar. Wenn ich über den Finder oder sonst wie in das /Scripts-Verzeichnis möchte, ist auch das gestattet.
Rufe ich die HTML-Seite von einem Client aus auf (im eigenen Netz), wird die HTML-Seite korrekt angezeigt. Wenn ich aber "absende" und damit das Skript aufrufe, wird der Zugriff auf die Skriptdatei verweigert.

Laut .htaccess-Datei soll ja auch nur der Server auf das Skript zugreifen. Wenn ich aber in access.log nachschaue, wer das Skript aufrufen wollte, so steht dort die IP des die HMTL-Seite darstellenden Clients.....

Hier der Inhalt der .htaccess:

order deny,allow
deny from all
allow from 192.168.0.103 (dies ist die interne Server-IP)


Hier die Zeile der formmailer.php:

<form action="/xxAusgangsordnersxx/Scripts/mail.php" method="post">

Ich hoffe, diese Angaben sind hilfreich und nicht nur verwirrend. Ich gebe mir Mühe.

Gruß und Danke
 
AW: Skriptaufrufende Instanz

Ach, das ganze passiert lokal.
Dann lass doch mal die logfiles sehen.

Im Terminal, nachdem der Fehler gerade aufgetreten war:
Code:
tail /var/log/apache2/error_log
Ausgebe kopieren und hier posten (in Code Tags)

(Bei prä-Leo musst Du apache2 durch httpd ersetzen.)

PS: mal ins Blaue:
allow from 127.0.0.1

Edit: Nochwas; wenn Du es Dir leicht machen möchtest, legst Du Dein Skript im cgi-bin (oder äquivalent) Ordner ab.
Dann kann man von außen auf einen Fall zugreifen und der Server kommt immer ran.
 
Zuletzt bearbeitet:
AW: Skriptaufrufende Instanz

nun, denkfehler!
in der html datei steht doch sinngemaess so was wie <form action="Scripts/mailer.php" ...> oder? wenn ich das formular in einer html-seite per "senden" abschicke, muss der client (also der fremde pc mit fremder ip-adresse) auf die mailer.php zugreifen dürfen. da kann man mit .htaccess nix aussperren, wofuer auch? welches ziel verfolgst du? geht es dir darum, dass keiner den quelltext von mailer.php lesen kann, in dem er http://www.dein.server/Scripts/mailer.php" im browser eingibt?
der browser ruft auf dem webserver die mailer.php auf, der webserver erkennt, dass es sich hier wohl nicht um eine html-datei oder ein bild handelt, sondern gibt den inhalt der mailer.php an PHP weiter, das fuehrt die datei aus und liefert als ergebnis html, das an den browser geschickt wird.
eine .htaccess macht hier absolut keinen sinn. denn der browser muss eine chance haben, die datei vom server anzufordern.

also das ganze in wenigen worte: schmeiss die .htaccess weg, dann stimmts. sagt dir doch auch die log-datei!
 
AW: Skriptaufrufende Instanz

nun, es soll lokal aber anschließend auch von ausserhalb funktionieren. Ich hatte die .htaccess auch schon um Einträge wie localhost und 127.0.0.1 ergänzt.

Also vom Server aus aufgerufen ist das Mail-Formular erfolgreich, die e-mail kommt bei mir an und die Bestätigungsseite wird gezeigt.

Vom Client aus ist die Meldung 403. Die Meldung aus dem error.log würde ich jetzt hier nur ungerne posten, da sie ja genau unsere Domain- und Server- sowie Verzeichnisangaben enthält. Die Kernaussage ist aber sicher:

client denied by server configuration

Im Prinzip wundert mich das ja auch nicht, weil nur der Server Zugriff auf das Skript-Verzeichnis hat. Aufrufen tut es aber schlussendlich derjenige Client, auf dem auch die Ausgangs-HTML-Seite dargestellt wird.

Und nur nochmals zur Sicherheit und zum Verständnis: die Ausgangs-HTML-Seite ist eine html-Datei, die auf dem Server ruht.
 
AW: Skriptaufrufende Instanz

@mr660:

das scheint exakt so der Fall zu sein. Mir ging es lediglich darum, die Skript-Verzeichnisse von aussen unzugänglich zu machen und so wenig wie möglich in einem "offenen" Bereich abzulegen. In den Skripten werden ja mehr oder minder doch wichtige statische Angaben gemacht - beim Mail-Formular z.B. die Empfangsadresse. Ich wollte in erster Linie verhindern, dass jemand - wie auch immer - das Skript auslesen kann und in Besitz meiner E-Mail-Adresse kommt. Ich bin nicht paranoid. Es handelt sich hier lediglich um einen ersten allgemeinen Gehversuch mit dem ich ausloten wollte, was geht und was nicht.

Vielen Dank

Siebi
 
AW: Skriptaufrufende Instanz

So, hat sich erledigt. Habe eine Lösung gefunden, die sowohl .htaccess erlaubt als auch Seitenaufruf durch den Client. Mit form action habe ich ein Script eingebunden, welches noch im offenen Bereich liegt. Dieses Skript tut aber nichts anderes als ein weiteres Skript zu inkludieren, welches im geschlossenen Bereich liegt. Nun wird das eigentlich Skript also nicht mehr vom Client sondern vom Server aus aufgerufen und siehe da: es geht. Die Lösung wurde möglich mit freundlicher Unterstützung von Sven Mintel auf tutorials.de
Trotzdem nochmals vielen Dank für alle Unterstützung

Gruß

Siebi
 
AW: Skriptaufrufende Instanz

War natürlich Blödsinn, was ich oben gepostet hatte. Ist ja bei PHP ganz anders. Ich hatte klassische cgi-Skripte im Kopf.
 
Zurück
Oben Unten