Automatisch .htaccess-Verz. authentifizieren?

Tach,

mit PHP in .htaccess-geschützte verzeichnisse zu gelangen ist nicht schwer. auch nicht den ordnerinhalt auf dem browserfenste auszugeben. dafür ist keine authentifizierung nötig (warum eigentlich nicht?)
lasse ich nun den inhalt als links (href) anzeigen und klicke auf eine beliebige datei springt das authorize-form (username und PW eingabe bitte…) auf, weil es die .htaccess-datei im ordner findet.
soweit hat alles seine richtigkeit.
nun meine frage:
kann ich mit php dem server mitteilen, daß der (eingeloggte) user berechtigt ist, auf diese dateien zuzugreifen?

also klartext:
ich möchte mich mittels php automatisch authentifizieren, wenn ich die zugangsadaten kenne.
ich will nicht, daß das auth-form aufspringt und micht um eingabe der daten bittet.
wie kann ich das automatisieren?

über ftp ist das ja möglich indem man sich über username:stuck_out_tongue:asswort@ftp://website.de einlogt.
das problem ist, daß ich nicht will, daß ein berechtigter user auch direkt root-rechte bekommt… und mehrere benutzer einstellen kann ich nicht, da ich bei puretec bin und somit natürlich keine rechte habe ,benutzer hinzuzufügen (oder etwa doch?)

er soll allerdings in seinem „privaten“ ordner machen dürfen was er will. upload, download, löschen.

vielen dank auch…
y

mit PHP in .htaccess-geschützte verzeichnisse zu gelangen ist
nicht schwer. auch nicht den ordnerinhalt auf dem
browserfenste auszugeben. dafür ist keine authentifizierung
nötig (warum eigentlich nicht?)

weil es etwas komplett verschiedenes ist. Wenn du über den Browser gehst geht das über http an den Webserver und nur der schert sich um die .htaccess datei. Wenn du direkt auf dem Dateisystem des Servers liest hat die Datei keine Bedeutung.

kann ich mit php dem server mitteilen, daß der (eingeloggte)
user berechtigt ist, auf diese dateien zuzugreifen?

Du könntest wie bei ftp auch nen link generieren mit dem passwort
http://user:stuck_out_tongue:asswort@server/verzeichnis/
das verstehen eigentlich alle browser, für ne gute Lösung halte ich das aber nicht

wenn du ne eigene benutzerverwaltung in deiner php anwendung hast würde ich ganz auf dieses reale verzeichnis verzichten mit der .htaccess datei. weil dann hast du zwei verschiedene benutzerverwaltungen (deine und die htpasswd) und die auch nichts voneinander wissen.

Wie machst du das überhaupt dass jemand in dieses geschütze verzeichnis über http da dateien hinladen kann und löschen (da würde mir nur webdav einfallen und davon gehe ich mal nicht aus)

Grüße
Bruno

weil es etwas komplett verschiedenes ist. Wenn du über den
Browser gehst geht das über http an den Webserver und nur der
schert sich um die .htaccess datei. Wenn du direkt auf dem
Dateisystem des Servers liest hat die Datei keine Bedeutung.

kann ich mit php dem server mitteilen, daß der (eingeloggte)
user berechtigt ist, auf diese dateien zuzugreifen?

Du könntest wie bei ftp auch nen link generieren mit dem
passwort
http://user:stuck_out_tongue:asswort@server/verzeichnis/
das verstehen eigentlich alle browser, für ne gute Lösung
halte ich das aber nicht

naja. das hat bei mir gar nicht erst funktioniert…(IE6 WinXP)

wenn du ne eigene benutzerverwaltung in deiner php anwendung
hast würde ich ganz auf dieses reale verzeichnis verzichten
mit der .htaccess datei. weil dann hast du zwei verschiedene
benutzerverwaltungen (deine und die htpasswd) und die auch
nichts voneinander wissen.

du meinst also eine datenbank-lösung?
ich habe mir das so ausgedacht, weil ich so über einen simplen ftp-client einen guten überblick habe wer welche daten in seinem ordner hat und wieviele user angemeldet sind. eine richtige benutzerverwaltung habe ich nämlich nicht. die muß also noch her…(angst)

Wie machst du das überhaupt dass jemand in dieses geschütze
verzeichnis über http da dateien hinladen kann und löschen (da
würde mir nur webdav einfallen und davon gehe ich mal nicht
aus)

webdav? nein!
ehrlich gesagt bin ich noch gar nicht soweit. ich habe vermutet, daß wenn ich es schaffe, dateien trotz .htaccess auszugeben dann auch in der lage bin zu schreiben oder löschen… also nicht. (?)

ich bin ziemlicher PHP-neuling und stricke mir das so nach meinen bedürfnissen zusammen. der eleganteste weg ist das bestimmt nicht. aber da ich auf dem gebiet mySQL noch weniger bewandert bin, habe ich gedacht, ich könnte das thema gepflegt umgehen.

wie würdest du es lösen?

  • benutzerkonto mit eigenem ordner
  • benutzer darf in seinem ordner alles (up/down/löschen) (auf x MB limitiert)
  • alles andere unsichtbar (bis auf öffentlicher web-bereich)

das limitieren kriege ich noch hin. anlegen und anzeigen auch. dann is ende (heul)

Wenn du sicherstellen willst, dass jeder Benutzer nur sein Verzeichnis benutzen kann und du keine weiteren unix-Benutzer anlegen kannst, dann macht es sinn, das ganze über php zu machen.

Regeln: in jedes (benutzer)verzeichnis sollte eine leere index.html gespeichert sein. Das verhindert das durchsuchen dieses Verzeichnisses. Man kann zusätzlich natürlich das Verzeichnis mittels .htaccess schützen.

Auf php-ebene musst du eine Datei haben, in der Benutzername und (verschlüsseltes) Passwort stehen. Für die Verschlüsselung von Passwörtern eignet sich md5 am besten, da es nicht „entschlüsselt“ werden kann.

Du brauchst den Benutzer dann nicht wirklich in sein Verzeichnis lassen, sondern routest seine Anfragen direkt durch dein skript: upload ist normal (siehe Upload-Anfrage im Forum) und download sollte über readfile($_SERVER[DOCUMENT_ROOT]."/".$basedir.$userfolder."/".$filename);
gehen.

Immer nachfragen, wenn was nicht ganz verständlich sein sollte. :smile:

islaminhannover.de

Wenn du sicherstellen willst, dass jeder Benutzer nur sein
Verzeichnis benutzen kann und du keine weiteren unix-Benutzer
anlegen kannst, dann macht es sinn, das ganze über php zu
machen.

Yes! Das war von vornherein mein plan. Eigentlich sogar mit mySQL-Datenbank, aber ich habe anfangs streß gehabt, die ordentlich zu „installieren“. Naja, jetzt habe ich mir eine eigene „Datenbank“ auf Textebene gebaut. Die sesnibelen Daten legen in einem .htaccess-ordner. Es stellt sich mir allerdings immer wieder eine frage: wenn ich mittels php auf geschützte ordner zugreifen kann, kann das doch jeder andere auch…(oder?) zumindest jeder, der den ordnernamen kennt.

Regeln: in jedes (benutzer)verzeichnis sollte eine leere
index.html gespeichert sein. Das verhindert das durchsuchen
dieses Verzeichnisses. Man kann zusätzlich natürlich das
Verzeichnis mittels .htaccess schützen.

hmmm. also das mit der index.html ist mir neu. aber leuchtet ein…
nur: ist .htaccess nicht grundsätzlich „sicherer“? wenn man won sicherheit überhaupt sprechen kann… wie gesagt: mit php über die dateiebene - und .htacceess ist so gut wie nicht anwesend…

Auf php-ebene musst du eine Datei haben, in der Benutzername
und (verschlüsseltes) Passwort stehen. Für die Verschlüsselung
von Passwörtern eignet sich md5 am besten, da es nicht
„entschlüsselt“ werden kann.

yo! so habe ich das auch gemacht. allerdings ist mir auch hier etwas aufgefallen, und da ich noch ziemlich neu auf dem gebiet bin, direkt eine frage:
die sache mit dem ‚salt‘… das sind also 2 zeichen, mit denen der string verschlüsselt werden soll. ich mache das dann in etwa so:

$passwort=crypt($eingabe,„xy“);

wenn ich mir nun die verschlüsselten eingaben ansehe, steht am anfang jedesmal der ‚salt‘ (also xy). und warum? vielleicht damit man doch rückschlüsse auf den verschlüsselungsmodus ziehen kann? :wink: (wohl nicht, aber warum?..) habe mir schon überlegt, die ersten 2 zeichen einfach zum verschlüsselten pw zu lösen…

Du brauchst den Benutzer dann nicht wirklich in sein
Verzeichnis lassen, sondern routest seine Anfragen direkt
durch dein skript: upload ist normal (siehe Upload-Anfrage im
Forum) und download sollte über
readfile($_SERVER[DOCUMENT_ROOT]."/".$basedir.$userfolder."/".$filename);
gehen.

cool. genauso hab ichs auch einfach gemacht… übrigens gabs bei mir probleme mit dem upload in .htaccess-verzeichnisse. der browser wollte dann immer eine authentifizierung. also hab ich ihn ausgetrickst: datei in einen ungeschützen ordner hochgeladen und nach erfolg mittels copy („a“, „nach b“) und unlink(„a“) verschoben. ätsch!
klappt super, ist nur leider lahm. da warscheinlich in zukunft öfter mal große daten verschickt werden (zw. 2MB und 20MB) wäre eine ftp-lösung viel geiler. davor habe ich allerdings angst. entweder müßte jeder unser root-pw bekommen (wozu dann überhaupt ein pw?) oder ich müßte es ins scipt schreiben, was genauso blöd wäre…also bleibt wohl nur http…

Immer nachfragen, wenn was nicht ganz verständlich sein
sollte. :smile:

du hast es so gewollt! :wink:

y

Es stellt sich mir allerdings
immer wieder eine frage: wenn ich mittels php auf geschützte
ordner zugreifen kann, kann das doch jeder andere
auch…(oder?) zumindest jeder, der den ordnernamen kennt.

das kommt gänzlich darauf an!! Zunächst einmal, woher sollte er den Ordnernamen kennen?? du wirst ihn nicht komplett übergeben (das wäre nicht klug). Beispiel: die daten liegen unter „/module/user_uploads/“, du übergibst einfach nur den Benutzernamen! Man kann das noch komplizierter machen, aber das ist meist nicht notwendig. Du solltest verhindern, dass man beispielsweise als Übergabe „…/“ eingeben kann, aber das ist einfach. Also das php-skript kannst du relativ gut absichern, was übrig bleibt ist die Daten abzusichern und da kann man das tatsächlich mit .htaccess machen.

Regeln: in jedes (benutzer)verzeichnis sollte eine leere
index.html gespeichert sein. Das verhindert das durchsuchen
dieses Verzeichnisses. Man kann zusätzlich natürlich das
Verzeichnis mittels .htaccess schützen.

hmmm. also das mit der index.html ist mir neu. aber leuchtet
ein…
nur: ist .htaccess nicht grundsätzlich „sicherer“? wenn man
won sicherheit überhaupt sprechen kann… wie gesagt: mit php
über die dateiebene - und .htacceess ist so gut wie nicht
anwesend…

Falls .htaccess mal scheitern soll, sollte apache nicht den inhalt des verzeichnisses darstellen. Das ist übrigens an anderer Stelle sehr nützlich: wenn du ein image-verzeichnis hast, von dem sehr wohl dateien ausgelesen werden dürfen, willst du meist trotzdem nicht, dass jeder ALLE Dateien sieht, dann eigenet sich so eine leere index.html.

Auf php-ebene musst du eine Datei haben, in der Benutzername
und (verschlüsseltes) Passwort stehen. Für die Verschlüsselung
von Passwörtern eignet sich md5 am besten, da es nicht
„entschlüsselt“ werden kann.

yo! so habe ich das auch gemacht. allerdings ist mir auch hier
etwas aufgefallen, und da ich noch ziemlich neu auf dem gebiet
bin, direkt eine frage:
die sache mit dem ‚salt‘… das sind also 2 zeichen, mit denen
der string verschlüsselt werden soll. ich mache das dann in
etwa so:

$passwort=crypt($eingabe,„xy“);

wenn ich mir nun die verschlüsselten eingaben ansehe, steht am
anfang jedesmal der ‚salt‘ (also xy). und warum? vielleicht
damit man doch rückschlüsse auf den verschlüsselungsmodus
ziehen kann? :wink: (wohl nicht, aber warum?..) habe mir schon
überlegt, die ersten 2 zeichen einfach zum verschlüsselten pw
zu lösen…

ich kenne crypt selber nicht, aber ich würde z.zt. eher md5 verwenden.
also $passwort=crypt($eingabe);, allerdings verwendet crypt selbst md5.

cool. genauso hab ichs auch einfach gemacht… übrigens gabs
bei mir probleme mit dem upload in .htaccess-verzeichnisse.
der browser wollte dann immer eine authentifizierung. also hab
ich ihn ausgetrickst: datei in einen ungeschützen ordner
hochgeladen und nach erfolg mittels copy („a“, „nach b“) und
unlink(„a“) verschoben. ätsch!
klappt super, ist nur leider lahm. da warscheinlich in zukunft
öfter mal große daten verschickt werden (zw. 2MB und 20MB)
wäre eine ftp-lösung viel geiler. davor habe ich allerdings
angst. entweder müßte jeder unser root-pw bekommen (wozu dann
überhaupt ein pw?) oder ich müßte es ins scipt schreiben, was
genauso blöd wäre…also bleibt wohl nur http…

Leider MUSS man das über http immer so machen, da es ein php-weites upload-verzeichnis gibt, von dem man die Dateien ins „richtige“ Verzeichnis kopieren muss.

Immer nachfragen, wenn was nicht ganz verständlich sein
sollte. :smile:

du hast es so gewollt! :wink:

non problemos, dazu sind wir ja hier.

islaminhannover.de