Auth per PHP for .htacess

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

Auth per PHP for .htacess

Postby sn00py » 27. October 2009 12:18

Hello

I have following problem.
I have a homepage with authentification per php, and in every php file i have the check for correct user ... all works fine.
But now i have following situation:

I have a subdir with about 100 .html files, and i can't change these file to php, because they are automaticaly created.
Now i would like to allow only the useres which are correct logged in to see them, but i dont like that they have to log in twice.
Therefor i would like that with each login in my php page, the user is also logged in in apache, so that i can write one .htaccess file for only one user (All php users should be mapped to one htaccess user)

What is the best method for this

regards
sn00py
sn00py
 
Posts: 6
Joined: 27. October 2009 11:44

Re: Auth per PHP for .htacess

Postby sn00py » 27. October 2009 12:22

Ach ?!*#?! gerade gesehen, das es hier deutsch ist ;)

Also nochmal folgendes, da mein englisch eh nicht bestes ist ....

Ich habe eine Seite, wo sich die user einloggen müssen, und das funkt auch alles eprfekt, auf jeder meiner seite kommt am anfang eine prüfung ob der user eh eingelogt ist.

DDoch nun habe ich ein unterverzeichnis, wo ca. 100 .html dateien liegen (KAnn diese auch nicht ändern, da diese automatisch erzeugt werden)
Ich möchte aber nur korrekt eingeloggten usern den zugriff darauf ermöglichen.
Daher suche ich nun eine möglichkeit, das sich alle user automatisch acuh mit dann nur EINEN zentrlaen user/passwort auch per htaccess einloggen (Diesen user/passwort) sollte aber niemand zu gesicht bekommen, sondern nur intern verwendet werden.
ICh würde dann eine .htaccess datei erzeugen.

Nur weiss ich nicht genau wie ich per php script mich am apachen anmelden kann am einfachsten/besten

danke schon mal im vorraus

sn00py
sn00py
 
Posts: 6
Joined: 27. October 2009 11:44

Re: Auth per PHP for .htacess

Postby Nobbie » 27. October 2009 13:08

sn00py wrote:Nur weiss ich nicht genau wie ich per php script mich am apachen anmelden kann am einfachsten/besten


Das kann man zwar beispielsweise via fsockopen() und dem "Authorize:" Token im HTTP Header erreichen, wahrscheinlich auch mit Hilfe von CUrl, aber es wäre keine Hilfe für Dich, denn es ist die falsche Stelle: wenn Du die Authorisierung im PHP Script durchführst, ist der angemeldete Client das PHP Script, resp. der Webserver, der dieses Script ausführt.

Das ist aber gar nicht das, was Du brauchst. Du mußt nämlich den Browser des Users einloggen, und nicht Dein PHP Script. Für das Problem sehe ich bei der momentanen Architektur keine Lösung (mindestens keine einfache).

Die Fragen, die sich stellen: wieso willst Du den Unterordner via .htaccess schützen, den Ordner darüber aber nicht? Der Ordner darüber wird wohl ausschließlich via PHP geschützt, davon bekommt Apache nichts mit. Da liegt die Ursache Deines Problems.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Auth per PHP for .htacess

Postby sn00py » 27. October 2009 13:17

Ja richtig, ich haben einen ordner, da liegen ausschließlich php files, in diese wird immer ein script eingebunden, das sich darum kümmert, das sich der user einloggt ....

nun habe ich einige automatisch erstellt html dateien bekommen, und diese werden auch immer wieder mal neu erstellt aus einem programm raus, diese möchte ich nun auch schützen
Da ist mir nur das mit dem .htaccess in den sinn gekommen.

Da ich aber nicht für alle user, die sich per php und datenbank anmelden auch einen extra eintrag per .htpasswd machen will, möchte ich nur einen user anlegen,auf den sich dann alle automatisch anmelden.

habe irgendwo mal was von einem modul für apache gelesen, das sich per php dann authen kann, aber leider finde ich das nicht mehr und als ich das damals testen wollte, gab es auch keine aktuellen module für den apachen.
sn00py
 
Posts: 6
Joined: 27. October 2009 11:44

Re: Auth per PHP for .htacess

Postby Nobbie » 27. October 2009 13:24

sn00py wrote:nun habe ich einige automatisch erstellt html dateien bekommen, und diese werden auch immer wieder mal neu erstellt aus einem programm raus, diese möchte ich nun auch schützen
Da ist mir nur das mit dem .htaccess in den sinn gekommen.


Keine gute Idee.

Wie wäre es, wenn Du die Dateien außerhalb von DocumentRoot legst (dann kann man via Apache überhaupt nicht drauf) und dann legst Du einen Link an, der auf ein PHP Script verweist, welches seinerseit aber Zugriff auf diese HTML Dateien hat und dann beispielsweise die Dateien auflistet. Bzw. auch einen Download erlaubt, wenn man eine bestimmte Datei haben will. Wichtig ist nur: der Zugriff geht immer zentral über PHP, das kannst Du auf diese Weise einfach erzwingen, und dann stehen Dir auch sofort die bekannten User-Daten zur Verfügung. Apache bekommt davon gar nichts mit.

So ist die normale Vorgehensweise, wenn man Daten ausliefern will, die man via eigenem PHP Script geschützt hat. Ob das HTML Dateien sind, Bilder oder MP3 spielt dabei gar keine Rolle - wichtig ist eben nur, dass man von außen nicht direkt auf diese Dateien zugreifen kann.

Das kann man übrigens auch dadurch erreichen, dass man zwar die HTML Dateien in einen zugänglichen Ordner legt, aber mit mod_rewrite grundsätzlich auf ein PHP Script verzweigt, das den Request ausführt. Auch da hat man dann die Userdaten wieder zur Verfügung. Das ist sehr einfach und schnell programmiert.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Auth per PHP for .htacess

Postby sn00py » 27. October 2009 13:39

Nobbie wrote:
sn00py wrote:nun habe ich einige automatisch erstellt html dateien bekommen, und diese werden auch immer wieder mal neu erstellt aus einem programm raus, diese möchte ich nun auch schützen
Da ist mir nur das mit dem .htaccess in den sinn gekommen.


Keine gute Idee.

Wie wäre es, wenn Du die Dateien außerhalb von DocumentRoot legst (dann kann man via Apache überhaupt nicht drauf) und dann legst Du einen Link an, der auf ein PHP Script verweist, welches seinerseit aber Zugriff auf diese HTML Dateien hat und dann beispielsweise die Dateien auflistet. Bzw. auch einen Download erlaubt, wenn man eine bestimmte Datei haben will. Wichtig ist nur: der Zugriff geht immer zentral über PHP, das kannst Du auf diese Weise einfach erzwingen, und dann stehen Dir auch sofort die bekannten User-Daten zur Verfügung. Apache bekommt davon gar nichts mit.

So ist die normale Vorgehensweise, wenn man Daten ausliefern will, die man via eigenem PHP Script geschützt hat. Ob das HTML Dateien sind, Bilder oder MP3 spielt dabei gar keine Rolle - wichtig ist eben nur, dass man von außen nicht direkt auf diese Dateien zugreifen kann.

Das kann man übrigens auch dadurch erreichen, dass man zwar die HTML Dateien in einen zugänglichen Ordner legt, aber mit mod_rewrite grundsätzlich auf ein PHP Script verzweigt, das den Request ausführt. Auch da hat man dann die Userdaten wieder zur Verfügung. Das ist sehr einfach und schnell programmiert.



Hmmm, kannst mir das noch mal erklären genauer?

Diese idee dachte ich mir auch am anfagn, aber habe da noch folgendes problem, ide HTML Seiten haben intern wieder Links drinnen (immer nur interne links) also immer relative links

Kann ich sowas dann auch mit einem mod_rewrite umabuen

Das PHP Script wäre kein problem, aber das mod_rewrite das es funktioniert, das immer das Script aufgerufen wird

So sehen die Aufrufe aus
Code: Select all
http://www.xxx.com/DevelopHelp/
http://www.xxx.com/DevelopHelp/window.html
http://www.xxx.com/DevelopHelp/addartikel.html?zoom_highlightsub=test

geht das?
sn00py
 
Posts: 6
Joined: 27. October 2009 11:44

Re: Auth per PHP for .htacess

Postby Nobbie » 27. October 2009 13:56

Das primitivste und brutalste Rewrite wäre so eines:

Code: Select all
RewriteEngine On
RewriteRule (.*) script.php


Da wird gnadenlos alles auf script.php umgeschrieben. Innerhalb von script.php stehen Dir in den $_SERVER Daten die Werte zur Verfügung, die der Anwender im Browser eingegeben hat (oder angeklickt hat), insbesondere im Feld $_SERVER['REQUEST_URI']. Mach mal einen einfach einen phpinfo() im script.php und dann legst Du das in den Ordner "DevelopHelp" und dann probierst Du Deine eigenen Beispiele mal (einfach im Browser eingeben). Dann wirst Du sehen, was im PHP Script davon ankommt und wie Du es behandeln möchtest. Es bietet sich an, die Userdaten zu überprüfen und wenn der Anwender eingelogged ist, machst Du einfach einen include() auf die gewünschte Datei (sonst Fehlermeldung).

Wobei ich noch nicht so ganz verstehe, was das für eine komische Geschichte ist, vor allem sind solche Links sinnfrei (wenn nicht mod_rewrite schon aktiviert ist):

Code: Select all
http://www.xxx.com/DevelopHelp/addartikel.html?zoom_highlightsub=test


Da html-Dateien normalerweise nicht auf dem Server interpretiert werden, machen die Parameter auf der URL keinen Sinn.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Auth per PHP for .htacess

Postby sn00py » 27. October 2009 14:12

Danek, werde ich mal probieren.

Der Parameter wird dann in einem Javascript verwendet zum Highlighten von den Suchergebnissen ...
sn00py
 
Posts: 6
Joined: 27. October 2009 11:44

Re: Auth per PHP for .htacess

Postby sn00py » 27. October 2009 14:51

.... besten dank ....

funktioniert bestens
sn00py
 
Posts: 6
Joined: 27. October 2009 11:44


Return to Apache

Who is online

Users browsing this forum: No registered users and 16 guests