Hans: .htaccess ohne Passwort

Hi an alle,

also ich erstelle gerade eine Homepage, und möchte sicherstellen, dass auf die einzelnen Seiten nicht direkt zugegriffen werden kann. (Damit meine ich das nicht einfach der Pfad/dateiname.htm in den Browser eingegeben werden kann, sondern nur über eine andere Seite verlinkt werden kann.)

Soweit so gut, aber gibt es nun eine Möglichkeite mittels .htaccess dies _ohne_ Benutzernamen und Passwort zu realisieren. Ich möchte generell _alle_ Zugriffe, ausser die verlinkten von mir selbst, verbieten.

Meine Idee wäre es _alle_ IP-Adressen zu sperren, mit Ausnahme von 127.0.0.1 (Localhost). Was meint ihr dazu? Ein Tutorial zu dem ganzen wäre auch nicht schlecht, weil ich finde nur welche mit Überprüfung von Benutzernamen und Passwort.

Lg Hans

  1. Hallo,

    also ich erstelle gerade eine Homepage, und möchte sicherstellen, dass auf die einzelnen Seiten nicht direkt zugegriffen werden kann. (Damit meine ich das nicht einfach der Pfad/dateiname.htm in den Browser eingegeben werden kann, sondern nur über eine andere Seite verlinkt werden kann.)

    das ist nicht möglich. Entweder eine Ressource ist per HTTP zugänglich, oder sie ist es nicht.

    Meine Idee wäre es _alle_ IP-Adressen zu sperren, mit Ausnahme von 127.0.0.1 (Localhost). Was meint ihr dazu?

    Dann könnte nur noch derjenige die Seiten abrufen, der direkt am Server sitzt - vorausgesetzt, da läuft ein Browser.

    Akzeptiere die Tatsache, dass HTTP ein zustandsloses Protokoll ist. Für jeden Seitenaufruf gibt es nur einen Request (Anforderung) vom Browser des Besuchers, und eine Response (Antwort) vom Server.
    Was den Request ausgelöst hat, kannst du serverseitig nicht feststellen[1]. Möglich, dass der Besucher einen Link auf deiner Seite geklickt hat; ebenso möglich, dass er die Adresse direkt eingegeben hat; möglich sogar, dass er das Dokument einfach mit wget herunterlädt. All das ist für dich nicht mit Sicherheit unterscheidbar.

    Vor allem bist du anscheinend dem Denkfehler aufgesessen, der Request käme "von deinem Server", wenn der Besucher einem Link folgt. Das ist nicht so. Er kommt, wie in allen anderen Fällen auch, vom Client. Eine Überprüfung auf IP 127.0.0.0/8 (localhost) ist damit völlig sinnlos.

    So long,
     Martin

    [1] Eine Abfrage des HTTP-Referers ist zwar möglich, aber oft nicht zielführend. Manche Browser sind so eingestellt, dass sie gar keinen Referer senden, andere so, dass sie einfach das Root-Dokument / der aktuellen Domain angeben, wieder andere senden irgendeinen Blödsinn.

    --
    Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Danke für die schnelle und verständliche Antwort.
      Könnte ich dann einen Benutzer und ein Passwort erstellen, das bei einer Verlinkung mitgesendet wird, und bei einem Direktaufruf abgefragt wird? Oder wie geht man so etwas an?

      lg Hans

      1. Hallo Hans,

        Danke für die schnelle und verständliche Antwort.
        Könnte ich dann einen Benutzer und ein Passwort erstellen, das bei einer Verlinkung mitgesendet wird, und bei einem Direktaufruf abgefragt wird?

        nein, aus zwei Gründen. Erstens ist es in HTTP nicht zulässig, Benutzernamen und Passwort in der URL (also im Link) mit zu übergeben. Man kann zwar analog zu FTP http://user:passwd@example.org/ notieren; das ist aber im HTTP-Standard ausdrücklich nicht erlaubt.
        Opera und Firefox akzeptieren diese Notation trotzdem, fragen aber den Benutzer, ob er sich *wirklich* mit diesen Zugangsdaten anmelden will; Internet Explorer verweigert es in der Defaulteinstellung komplett, akzeptiert's aber ohne Rückfrage, wenn man es in der Konfiguration freischaltet. Wie sich andere Browser verhalten, weiß ich nicht.
        Unterm Strich also: Keine brauchbare Lösung. Dazu kommt, dass jemand auch diese URL mit Benutzername und Passwort jederzeit direkt eingeben könnte, wenn sein Browser das unterstützt. Du hättest also nichts gewonnen.

        Oder wie geht man so etwas an?

        Die beste Methode, die mir im Moment einfällt: Sessions mit PHP.
        Oder mit einer anderen Scriptsprache deiner Wahl beim Abruf der Startseite ein kurzlebiges Cookie setzen (wenige Minuten), und beim Abruf einer Unterseite kontrollieren, ob das Cookie existiert.

        So long,
         Martin

        --
        Um mit einem Mann glücklich zu werden, muss eine Frau ihn sehr gut verstehen und ein bisschen lieben.
        Um mit einer Frau glücklich zu werden, muss ein Mann sie sehr lieben und darf gar nicht erst versuchen, sie zu verstehen.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Die beste Methode, die mir im Moment einfällt: Sessions mit PHP.

          Daran habe ich auch schon gedacht, aber ich dachte das .htaccess speziell auch für solche Einsatzgebiete wie meiner konzipiert wurde (entschuldigt die hochgestochene Ausdrucksweiße ;) ).

          Lg Hans

          1. Hi,

            ich dachte das .htaccess speziell auch für solche Einsatzgebiete wie meiner konzipiert wurde (entschuldigt die hochgestochene Ausdrucksweiße ;) ).

            .htaccess wurde für verzeichnislokale Serverkonfiguration konzipiert. Die Datei hat nicht das geringste mit irgendwelchen Schutzmechanismen zu tun. Und nein, auch HTTP-Authentication, was Du eigentlich zu meinen scheinst, wurde nicht dazu konzipiert, ein Grundpragma von HTTP zu ändern:

            HTTP kennt kein "von". Ein Request ist ein Request ist ein Request.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
  2. Ich möchte generell _alle_ Zugriffe, ausser die verlinkten von mir selbst, verbieten.

    Von den Benutzern mal abgesehen, ist dir die Wirkung auf Suchmaschinen klar? Und welchen Zweck soll das erfüllen?

    1. Von den Benutzern mal abgesehen, ist dir die Wirkung auf Suchmaschinen klar? Und welchen Zweck soll das erfüllen?

      Ein konkretes Beispiel: Ich habe zum Beispiel eine Seite die "registrierung.php" heißt. Auf der befindet sich das Registrierungsformular. Überprüft und gespeichter werden die eingegebenen Daten dann auf einer anderen Seite. Zum Beispiel auf "registrierung_abschluss.php".
      Nun möchte ich verhindern das auf "registrierung_abschluss.php" direkt zugegriffen wird.

      lg Hans

      1. [latex]Mae  govannen![/latex]

        Von den Benutzern mal abgesehen, ist dir die Wirkung auf Suchmaschinen klar? Und welchen Zweck soll das erfüllen?

        Ein konkretes Beispiel: Ich habe zum Beispiel eine Seite die "registrierung.php" heißt. Auf der befindet sich das Registrierungsformular. Überprüft und gespeichter werden die eingegebenen Daten dann auf einer anderen Seite. Zum Beispiel auf "registrierung_abschluss.php".
        Nun möchte ich verhindern das auf "registrierung_abschluss.php" direkt zugegriffen wird.

        Dann lege diese Dateien in eine Ordner, der oberhalb oder parallel zum Ordner, der document root darstellt, an.

        Cü,

        Kai

        --
        Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
        in Richtung "Mess up the Web".(suit)
        SelfHTML-Forum-Stylesheet
        1. Dann lege diese Dateien in eine Ordner, der oberhalb oder parallel zum Ordner, der document root darstellt, an.

          Die Ironie in deinem Beitrag dürfte Hans entgehen.

      2. Ein konkretes Beispiel: Ich habe zum Beispiel eine Seite die "registrierung.php" heißt. Auf der befindet sich das Registrierungsformular. Überprüft und gespeichter werden die eingegebenen Daten dann auf einer anderen Seite. Zum Beispiel auf "registrierung_abschluss.php".
        Nun möchte ich verhindern das auf "registrierung_abschluss.php" direkt zugegriffen wird.

        Ich kann darin keinen Zweck erkennen.