Hamlet: htaccess per datei

Hallo,
ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

Hamlet

  1. ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

    Wenn man die eingegebenen Logindaten für jedermann sichtbar in die URL setzt, ähnlich wie bei FTP-URLs, funktioniert es mit vielen Browsern. Ob es von großer Weisheit zeugt, nur wegen der Passwortabfrage das Passwort sichtbar und (über die Referrer-Auskunft des Browsers) möglicherweise auch in jede erreichbare Logdatei schreiben zu lassen, ist eine andere Frage.

    1. Vielen Danke für die hilfreichen Antworten, dass erspart mir einiges an suchen.

      -closed-

  2. echo $begrüßung;

    ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

    Nein, das ist nicht möglich. Was du als einmaligen Anmeldevorgang siehst, läuft bei dem zustandslosen HTTP-Protokoll in etwa so ab:

    • Client (Browser) ruft auf einem Server eine Ressource auf.
    • Server sagt "401 Unauthorized"
    • Client zeigt dem Benutzer den Anmelde-Dialog
    • Client sendet eine erneute Anfrage nach der Ressource zum Server, diesmal aber mit den eingegebenen Anmeldedaten
    • Bei allen weiteren Aufrufen von Ressourcen im gleichen Pfad sendet der Client automatisch diese Anmeldedaten mit. Ansonsten ginge das Spiel wieder von vorn los.

    Wenn der Client also nicht mitbekommt, dass du diesen Mechanismus nutzen willst, kann er da auch nicht mitspielen.

    Wenn du unbedingt eine Anmeldung über ein HTML-Formular machen möchtest, musst du einen anderen Mechanismus wählen, der ähnlich wie der obige abläuft, bei dem der Client bei jeder Abfrage eindeutige Daten, die zur Wiedererkennung des Nutzers verwendet werden können, mitsendet. Soweit mir bekannt ist, geht das nur mit Cookies.

    echo "$verabschiedung $name";

    1. Hello,

      ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

      Nein, das ist nicht möglich.

      Das ist mir zu absolut.
      Deine Aussage gilt nur für "Standard-Browser".
      Mich wundert es, dass es auf dem Markt noch keinen Browser gibt, an dem man wirklich _alles_ selber eintellen kann. Dann wären die Credentials nämlich auch ohne Formular voreinstellbar und es wäre nicht mehr nötig, das "Login-Fenster" mit dem Anmeldedialog als zweite Instanz zu öffnen.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hi Tom

        ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

        Nein, das ist nicht möglich.

        Das ist mir zu absolut.
        Deine Aussage gilt nur für "Standard-Browser".
        Mich wundert es, dass es auf dem Markt noch keinen Browser gibt, an dem man wirklich _alles_ selber eintellen kann. Dann wären die Credentials nämlich auch ohne Formular voreinstellbar und es wäre nicht mehr nötig, das "Login-Fenster" mit dem Anmeldedialog als zweite Instanz zu öffnen.

        Voreinstellung wäre eine Möglichkeit. Das setzt aber voraus, dass man vor dem (erstmaligen) Besuchen einer Seite bereits wissen muss, dass man solch eine Einstellung zu einer bestimmten URL, (die sich ja auch mal ändern kann,) vornehmen muss.
        Und wenn man daran mal was ändern will (z.B. das Passwort) muss man erst in der Konfiguration des Browsers die entsprechende Einstellung suchen gehen.

        Diejenigen, die die Voreinstellung nicht machen (DAUs, Internetcafe-User, ...), müssen immer noch irgend eine Eingabemöglichkeit angezeigt bekommen. Und soweit ich weiß, gibt es keine Vorschrift (HTML-Tags o.ä.) die dem Browser sagt, wo und wie er diese anzuzeigen hat.
        Gäbe es das, könnte man 401er Seiten mit Eingabeformular erstellen ...

        dedlfix

        1. Hello,

          Voreinstellung wäre eine Möglichkeit. Das setzt aber voraus, dass man vor dem (erstmaligen) Besuchen einer Seite bereits wissen muss, dass man solch eine Einstellung zu einer bestimmten URL, (die sich ja auch mal ändern kann,) vornehmen muss.
          Und wenn man daran mal was ändern will (z.B. das Passwort) muss man erst in der Konfiguration des Browsers die entsprechende Einstellung suchen gehen.

          Diejenigen, die die Voreinstellung nicht machen (DAUs, Internetcafe-User, ...), müssen immer noch irgend eine Eingabemöglichkeit angezeigt bekommen. Und soweit ich weiß, gibt es keine Vorschrift (HTML-Tags o.ä.) die dem Browser sagt, wo und wie er diese anzuzeigen hat.
          Gäbe es das, könnte man 401er Seiten mit Eingabeformular erstellen ...

          Ich dachte da auch nicht an "DAUs", ganz im Gegenteil.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
  3. Hi,

    ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

    Ja, das ist möglich.

    1. Ist die Datei auf dem eigenen Server, ist das unnötig. PHP hat so oder so Zugriff drauf.
    2. Ist die Datei auf einem fremden Server, so kann man, wie schon erwähnt, mit http://username:passwort@www.example.com auf eine .htaccess geschützte Datei zugreifen. Ebenfalls wurde erwähnt, daß das nicht mit jedem Browser funktioniert. Nicht erwähnt wurde, daß es aber mit PHP ebenfalls funktioniert. Damit bist Du nicht auf die Ausstattung des Surfers (und deren Funktionalität) angewiesen. Fordere die Datei halt mit PHP an und gib sie direkt an den Browser weiter. Vorausgesetzt, dein Provider hat URL-Zugriffe nicht deaktiviert (Stichwort: allow_url_open in der php.ini), ginge dies am einfachsten mit readfile('http://username:passwort@www.example.com/proteced_dir/file.ext'). Der Surfer dabei bekommt von Datei-URL, Usernamen und Passwort nichts mit. Er sieht nur den URL der PHP-Datei, die die geschützte Datei durchreicht.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Hallo Cybaer,

      Fordere die Datei halt mit PHP an und gib sie direkt an den Browser weiter. Vorausgesetzt, dein Provider hat URL-Zugriffe nicht deaktiviert (Stichwort: allow_url_open in der php.ini), ginge dies am einfachsten mit readfile('http://username:passwort@www.example.com/proteced_dir/file.ext').

      Das ist imho aber ziemlicher Unsinn - du erzeugst damit jede Menge unnötigen Traffic (mal ganz davon abgesehen, dass Passwörter in URLs _nichts_ zu suchen haben).

      Grüße aus Nürnberg
      Tobias

      1. Hi,

        Das ist imho aber ziemlicher Unsinn

        So so ... :-}

        • du erzeugst damit jede Menge unnötigen Traffic

        Thema verfehlt. Es geht hier nicht um "minimalen Traffic", sondern um den Zugriff auf eine per .htaccess geschützte Resource ohne Eingabeaufforderung.

        Da dies mit genannter Methode problemlos funktioniert, kann von Unsinnigkeit, zumindest im Hinblick auf die klar umrissene Aufgabenstellung, wohl keine Rede sein. Inwiefern diese selbst hingegen sinnvoll ist, steht auf einem anderen Blatt. Ob Du dies ohne Kenntnis der sonstigen Umstände hingegen überhaupt beurteilen kannst, allerdings auch. =:-}

        Eine andere Methode, das gewünschte Ziel zu erreichen, hast Du leider nicht genannt. So bleibt dann wohl nur die Feststellung: Nett, daß Du auf das Offensichtliche (mehr Traffic) nochmal explizit hingewiesen hast, der Rest ist, na ja ... ;->

        (mal ganz davon abgesehen, dass Passwörter in URLs _nichts_ zu suchen haben).

        Falsch. Sie haben im HTTP (eigentlich) nicht zu suchen. Aber nicht jedes Protokoll verbietet es - und daß es URLs nur mit dem HTT-Protokoll gibt, wäre mir neu.

        Davon abgesehen: Selbst wenn die PHP-Entwickler einmal beschließen sollten diese Art des Zugriffs künstlich zu verhindern (was aber schon aus Kompatitibilitätsgründen, zumindest das PHP-Manual weist auf diese Möglichkeit explizit hin, wohl eher unwahrscheinlich ist - notwendig ist es, anders als bei fehlerhaften Browsern von dappischen Programmierern >:->, ohnehin nicht): Ob ein Surfer sich einen Browser installiert, der diese Zugriffsart nicht beherrscht, kann ich als Webmaster nicht beeinflussen. Aber über mein PHP bin im Zweifel ich der Herrscher.

        Gruß, Cybaer

        PS: Was war gerade zu lesen? Nur 3% das europäischen Glasfasernetzes sind überhaupt in Nutzung - wenn überhaupt? Und Du machst Dir Sorgen um erhöhten Traffic in ausgesuchten Einzelfällen? Sehr ehrenwert - und wohl mehr als flüssig ... ;->

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. hi,

        mal ganz davon abgesehen, dass Passwörter in URLs _nichts_ zu suchen haben

        sie stehen in dem von PHP abgesetzten HTTP-request m.W. dann auch nicht mehr im request-URI.
        PHP ist an der stelle so intellingent, http://username:passwort@example.com/ vor dem ausführen des requests derart aufzulösen, dass username und passwort HTTP-konform übergeben werden.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi,

          PHP ist an der stelle so intellingent, http://username:passwort@example.com/ vor dem ausführen des requests derart aufzulösen, dass username und passwort HTTP-konform übergeben werden.

          Kannst Du sagen, wie das geht?

          PHP ist aber auch so tolerant, beim parse_url() user und password explizit zu ermitteln. Die Forumssoftware ist z.B. diesbezügl. ja keineswegs tolerant (AFAIR werden user:passwort-Links hier als "feherhaft" abgelehnt ;-)).

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. hi,

            PHP ist an der stelle so intellingent, http://username:passwort@example.com/ vor dem ausführen des requests derart aufzulösen, dass username und passwort HTTP-konform übergeben werden.

            Kannst Du sagen, wie das geht?

            nein, im quellcode von PHP wühle ich selten :-)

            meinst du von der theorie her?
            na genauso, wie dein browser username und passwort auch übergibt, wenn er dazu aufgefordert wurde.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. echo $begrüßung;

      ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

      Es geht darum, _direkt_ auf die geschützte Datei zuzugreifen und zwar autorisiert über eine mit Loginfeldern gestaltete Seite.

      1. Ist die Datei auf dem eigenen Server, ist das unnötig. PHP hat so oder so Zugriff drauf.

      Na sicher hat man als Applikation auf einem System, unabhängig von irgendwelchen Einstellungen in der Webserver-Konfiguration, Zugriff auf das Dateisystem.

      Es geht aber nicht darum, lokalen Applikationen den Zugriff zu verweigern, sondern dem Webanwender. Und da sind Maßnahmen wie die .htaccess keineswegs unnötig.

      1. Ist die Datei auf einem fremden Server, so kann man, wie schon erwähnt, mit http://username:passwort@www.example.com auf eine .htaccess geschützte Datei zugreifen.

      Ich plädiere ebenfalls für ein: Thema verfehlt. Darum ging es nicht, siehe oben.

      echo "$verabschiedung $name";

      1. Hi,

        Es geht darum, _direkt_ auf die geschützte Datei zuzugreifen und zwar autorisiert über eine mit Loginfeldern gestaltete Seite.

        Jo, so habe ich das auch verstanden. :-)

        Es geht aber nicht darum, lokalen Applikationen den Zugriff zu verweigern, sondern dem Webanwender. Und da sind Maßnahmen wie die .htaccess keineswegs unnötig.

        Hat auch niemand behauptet. =:-)

        1. Ist die Datei auf einem fremden Server, so kann man, wie schon erwähnt, mit http://username:passwort@www.example.com auf eine .htaccess geschützte Datei zugreifen.
          Ich plädiere ebenfalls für ein: Thema verfehlt. Darum ging es nicht, siehe oben.

        Wieso? Das PHP-Script fordert mit z.B. readfile("http://username:passwort@www.example.com/protected_dir/file.ext") die .htacess-geschützte Datei file.ext an. Haaallooo! Ist das Script des Autors, nicht des Surfers. ;-) Und readfile... wird von "meinem" Script logischerweise erst auf aufgerufen, wenn "mein" Login nach "meiner" Vorstellung erfolgt ist.

        Mehr "direkt" geht nunmal nicht, da man keine Dateien per .htaccess schützt (also i.d.R. wenigstens - bitte nicht "allow", "deny" oder was-weiß-ich ausgraben ;-)), sondern Verzeichnisse. Und *für den Surfer* ist/wirkt das doch sehr direkt - der weiß ja nicht, daß da noch einer zwischensitzt, der die Nüsse schaukelt ... ;->

        Gruß, Cy-"ja ja, auch Verzeichnisse sind Dateien"-baer ;-)

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. echo $begrüßung;

          Hier noch mal die Anforderung:

          ist es möglich eine php-seite mit loginfeldern zu gestalten, mit der man sich direkt auf eine htaccess-geschützte datei einloggen kann, ohne das popup?

          Beachte bitte die drei Worte: "ohne das popup"?

          Das interpretiere ich als den HTTP-Auth-Dialog.

          1. Ist die Datei auf einem fremden Server, so kann man, ...

          Diesen Dialog bekommt der Webanwender zu sehen, wenn er eine geschützte Resource _auf dem von ihm angesprochenen Server_ abrufen will.
          Da ist kein "fremder" Server mit im Spiel, für den man eine Von-Hinten-Durch-Die-Brust-Ins-Auge-Lösung braucht.

          Wenn die Optik des HTTP-Auth-Dialoges stört, reicht auch die von mir in https://forum.selfhtml.org/?t=106271&m=658120 erwähnte Nachbau-Lösung mit den Keksen.

          echo "$verabschiedung $name";

          P.S. Ich bezweifle nicht, dass die von dir erwähnte Möglichkeit funktioniert, nur ist das hier nicht der passende Anwendungsfall.

          1. Hi,

            Beachte bitte die drei Worte: "ohne das popup"?

            Spätestens wenn Du es ausprobiert hättest, wüßtest Du, das meine Lösung mit "ohne das popup" es absolut trifft.

            Das interpretiere ich als den HTTP-Auth-Dialog.

            Schau an, dann sind wir schon zu zweit! ;-)

            1. Ist die Datei auf einem fremden Server, so kann man, ...
              Diesen Dialog bekommt der Webanwender zu sehen, wenn er eine geschützte Resource _auf dem von ihm angesprochenen Server_ abrufen will.

            So ist es.

            Da ist kein "fremder" Server mit im Spiel,

            Das weißt Du? Interessant! Ich weiß es nicht! Meine Glaskugel ist gerade in Reparatur! :-}

            Deswegen ja auch eine zweigeteilte Antwort:
            1. Eigener Server mit einer .htaccess-geschützten Datei: Nichts besonderes notwendig. PHP-Login programmieren und dann mit PHP direkt darauf zugreifen, weil PHP die .htaccess (nicht .phpaccess ;->) egal ist.
            2. Fremder Server mit einer .htaccess-geschützten Datei: PHP-Login programmieren und dann, nach erfolgreichen Login beim eigenen PHP-Script, Zugriff via username:passwort. (OK, das ginge natürlich auch bei dem eigenen Server, aber s. Punkt 1 =;-))

            Mächtig schwer zu verstehen. =;-o

            Wenn die Optik des HTTP-Auth-Dialoges stört, reicht auch die von mir in https://forum.selfhtml.org/?t=106271&m=658120 erwähnte Nachbau-Lösung mit den Keksen.

            Da für PHP, wie jeder PHP-Programmierer zumindest wissen kann und auch sollte (sonst sollte er auch besser die Finger von öffentlichen PHP-Seiten lassen =:->), der .htccess-Schutz ohnehin nicht gilt, habe ich das, was Du als "geht nicht"-Nachbaulösung empfiehlst nur pro forma in Kurzform als ersten Punkt angeführt. Da, wo es auch aus PHP-Sicht einen .htaccess-Schutz überhaupt nur gibt, habe ich ebenfalls eine Lösung genannt. Mithin dein "geht nicht" in ein, jetzt beide Punkte behandelndes, "geht" korrigiert.

            IMHO wäre es also einzig zu diskutieren, ob der Fragesteller einfach nicht im Ansatz wußte, wovon er da überhaupt redet. Das mag sein, das mag nicht sein, aber auf jeden Fall ist es fruchtlos. Und ohnehin egal, da ja beide denkbaren Möglichkeiten gelöst wurden ... 8-)

            P.S. Ich bezweifle nicht, dass die von dir erwähnte Möglichkeit funktioniert, nur ist das hier nicht der passende Anwendungsfall.

            Da weder ich noch Du wissen, wie der Anwendungsfall hier aussieht, spreche ich sowohl dir als auch mir (wie auch bereits vorher Tobias) die dies zu beurteilen notwendige Kompetenz ab. Ich kenne jedenfalls für beide Varianten (erfolgreich gelöste) Anwendungsfälle - zumindest dessen kannst Du gewiß sein. ;-)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!