htaccess-Problem - eigenen Server nicht aussperren

Alles, was den Apache betrifft, kann hier besprochen werden.

htaccess-Problem - eigenen Server nicht aussperren

Postby m1hoelbl » 02. August 2007 11:21

Hallo, ich weiß, dass es sehr viel zu diesem Thema gibt, doch habe leider die Lösung zu meinem Problem nicht gefunden.
Ich möchte mit .htaccess den Zugriff auf ein bestimmtes Verzeichnis für alle Benutzer sperren, nur mein Server soll mittels cgi-Skript darauf zugreifen können.

Beispiel:
Verzeichnis /var/www/html/bilder/ soll für alle Benutzer gesperrt werden
Mit http://ip-adresse/cgi-bin/testscript.cgi soll auf diese Bilder zugegriffen werden können (d.h. das Skript soll die Bilder darin holen können)
Benutzer dürfen aber nicht mit http://ip-adresse/bilder/ auf die Bilder im diesem Ordner zugreifen können.

Mit der Erstellung des Files .htaccess im Verzeichnis /bilder kann ich jetzt alle Benutzer sperren, doch dann kann das Skript die Bilder auch nicht mehr aufrufen, weil auf die IP-Adresse des aufrufenden Benutzers verwendet wird.
d.h. folgendes funktioniert nicht
Deny from all
Allow from server-ip-adresse

Habe ich da etwas falsch verstanden? Oder muss ich das anders machen, dass nur dieses Skript auf die Bilder zugreifen kann und sonst kein anderer Benutzer?
Bitte um Hilfe!
Danke im Voraus!

LG Markus
m1hoelbl
 
Posts: 3
Joined: 02. August 2007 11:10

Postby KingCrunch » 02. August 2007 11:28

Wahrscheinlich etwas Grundlegendes, weil sowas (als htaccess im Bilder-Verzeichnis) dürfte reichen
Code: Select all
<Files *>
  Deny From All
</Files>
Das Script greift über das lokale Dateisystem auf die Dateien zu (wenn nicht, is irgendwas am Script falsch), is also von der Direktive nicht betroffen.

Schau ma erstmal im error.log, was falsch gelaufen sein soll.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby m1hoelbl » 02. August 2007 12:12

Erst einmal vielen Dank für deine schnelle Hilfe!
Es funktioniert aber leider nicht. Habe jetzt die .htaccess, wie du es vorgeschlagen hast im Verzeichnis /bilder erstellt. Ich werde mal die Fehlermeldungen und einen Teil vom cgi-Skript posten.

Teil vom cgi-Skript (testscript.cgi), das vom Client aufgerufen wird (es wird eigentlich nur das Bild vom Server aus dem Verzeichnis /bilder aufgerufen):
#!/usr/bin/perl -w -T
...
print '<body>', "\n";
print ' <IMG SRC="http://server-ip-adresse/bilder/bild.jpg" NAME="Bild" width="460" height="188" align="top">', "\n";
print ' </body>', "\n";

Nachdem ich den Link http://server-ip-adresse/cgi-bin/testscript.cgi aufrufe erhalte ich im access_log folgendes:
meine_ip_adresse - - [02/Aug/2007:13:03:17 +0200] "GET /cgi-bin/testscript.cgi HTTP/1.1" 200 312 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
meine_ip_adresse - - [02/Aug/2007:13:03:17 +0200] "GET /bilder/bild.jpg HTTP/1.1" 403 299 "http://server-ip-adresse/cgi-bin/testscript.cgi" "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"

Im error_log erhalte ich aber auch eine Fehlermeldung:
[Thu Aug 02 13:03:17 2007] [error] [client meine_ip_adresse] client denied by server configuration: /var/www/html/bilder/bild.jpg, referer: http://server-ip-adresse/cgi-bin/testscript.cgi

Also habe ich so keinen Zugriff auf das Bild. Handelt es sich dabei um einen Skript-Fehler?

LG Markus
m1hoelbl
 
Posts: 3
Joined: 02. August 2007 11:10

Postby m1hoelbl » 02. August 2007 14:45

Hallo, habe das Problem jetzt gelöst. Es muss angegeben werden, dass der Referer, von dem das cgi-Skript aufgerufen wird, auf die Bilder zugreifen darf. D.h. die .htaccess-Datei im /bilder Verzeichnis sieht folgendermaßen aus:
Code: Select all
SetEnvIf Referer http://server-ip-adresse internal

<Limit GET POST>
        order deny,allow
        deny from all
        allow from env=internal
</LIMIT>


Danke an alle, die sich mit dem Problem beschäftigt haben!

LG Markus
m1hoelbl
 
Posts: 3
Joined: 02. August 2007 11:10

Postby KingCrunch » 03. August 2007 01:20

Soll jetzt der Server darauf zugreifen dürfen, oder du am Rechner selbst?!? Das ist ein weiter Unterschied! Ansonsten empfiehlt sich die klassische "Alle doof, ausser mich"-Methode
(Unter Windows natürlich *.*)
Code: Select all
<Files *>
  Order Deny, Allow
  Deny From All
  Allow From 127.0.0.1
</Files>


Will ja nix sagen, aber diene Variante is insofern Murcks, dass a) der Referer sowieso manipulierbar ist und b) das nur aussagt, dass jeder Zugriff hat, der von dieser Seite kommt ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25


Return to Apache

Who is online

Users browsing this forum: No registered users and 20 guests