1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Passwortschutz? Alternative zu .htaccess?

Discussion in 'Web-Know-how für die Homepage' started by luckyfragger, Aug 19, 2009.

Thread Status:
Not open for further replies.
  1. Guten Tag.
    Folgende Problemstellung:

    - Eine Homepage mit öffentlichem Bereich soll auch einen internen Bereich haben
    - im Internen Bereich soll man Daten up- und downloaden, sowie Nachrichten an ein schwarzes Brett ( in einer Art shoutbox evtl!?) austauschen können

    --> Dieser Interne Bereich soll passwortgeschützt werden und das möglichst sicher.

    Mein erste Gedanke, da relativ simpel, war der schutz durch .htaccess.

    Dazu gleich die erste Frage: Wie sicher ist diese Methode? Die Passwörter liegen ja in einer Datei in dem Ordner, können diese dann nicht abgefangen werden bzw sogar die Datei einfach ausgelesen werden?

    So sieht die .htaccess-Datei aus:

    Code:
    AuthType Basic
    AuthName "Interner Bereich"
    AuthUserFile xxx/intern/.htpasswd
    require user xxx
    
    Da im internen Bereich allerdings, wie bereits erwähnt, ein Schwarzes Brett sowie ein FileManagementSystem eingebaut werden soll, ist es vielleicht sinnvoll, einen anderen Passwortschutz einzubauen - eine Art log-in, der sich den Benutzernamen merkt und diesen dann beim Upload von Dateien oder beim Schreiben von Nachrichten gleich wieder ausliest und für andere ausgibt.

    Soetwas ließe sich ja sicherlich mit php realisiere, doch wie sicher ist das? Ich kenne mich nicht allzu gut mit php aus, weiß aber, dass dort variablen(in diesem fall dann user und password) oft in der URL übergeben werden, welche dann leicht "gehackt" werden könnten.

    Meine Fragen:
    -Wie sicher ist die Lösung mit php?
    -Wie leicht kann man sich als Laie da einarbeiten?
    -Ist die Variante mit php überhaupt sinnvoll um eine Art login zu ermöglichen?
    Ich wüsste halt keien elegantere Alternative, um den Benutzernamen für das Schwarze Brett und das FileManagementSystem zur Verfügung zu stellen, ohne diesen immer wieder eingeben zu müssen.


    Für eure Hilfe bin ich euch schon jetzt dankbar!

    Gruß,
    Lucky

    PS: Habt ihr eine Idee oder Alternative zu einer doofen und unseriösen Shoutbox?
    Man soll im internen Bereich einfach nur a) kurze Nachrichten "anpinnen" die für alle eingeweihten sichtbar sind und b) Dateien hoch- und wieder runterladen können.

    €dit:

    Im übrigen liegt mein webspace bei 1und1, dort habe ich folgende Äußerung gefunden:
    "PHP läuft bei 1&1 WebHosting als CGI. Damit funktioniert eine Authentifizierung per Script nicht (siehe: >> http://php3.de/manual/de/features.http-auth.php)."
     
    Last edited: Aug 19, 2009
  2. kazhar

    kazhar Viertel Gigabyte

    htacess ist wahrscheinlich eine der sichersten möglichkeiten - wenn man es richtig macht. siehe ttp://httpd.apache.org/docs/2.2/howto/htaccess.html
    die methode hat natürlich auch nachteile. z.b. musst du für jeden neuen benutzer, der zugriff haben soll bzw wenn ein benutzer keinen zugriff mehr haben soll diese datei umbauen. außerdem lässt sich die passwortabfrage nicht in die seite integrieren, sondern erscheint als popup.

    alternativen dazu gibt es natürlich. sie setzen entweder auf cookies oder auf session ids, die dann aber in alle relevanten links eingebaut werden müssen.
    die session id hat den nachteil, dass sie in der url auftaucht und damit gebookmarkt und auch weitergegeben werden kann.
     
  3. Gäbe es denn eine Möglichkeit, dass man mit .htaccess-login sozusagen eingeloggt bleibt?
    Also dass der Name beim Login gespeichert wird und beim Posten von Nachrichten oder beim Upload von Dateien dann wieder ausgegeben wird?
     
  4. kazhar

    kazhar Viertel Gigabyte

    wie meinst du das mit "eingeloggt bleiben"?
    wenn der browser geschlossen und später wieder geöffnet wird?
     
  5. Die Eklärung steht ja direkt darunter. ;)

    ich frag mich, ob es möglich ist, den eingegebenen Benutzernamen in einer Variable zu speichern und diese dann später wieder auszugeben. Nicht nach Schließen des browsers sondern beim hochladen von dateien oder beim Schreiben von Nachrichten innerhalb des internen Bereichs.

    Ein Abfolge könnte so aussehen.

    home besuchen
    intern klicken
    username eingeben (wird in einer variablen gespeichert)
    passwort eingeben
    jetzt möchte der user ein file hochladen, welches andere benutzer runterladen können.
    Dazu kommen die Files in eine Datenbank, die am ende die files in einer tabelle ausgibt:

    filename, filetype, file size, date, USERNAME.

    Anschließend möchte der Benutzer noch eine Nachricht an die anderen in eienr Art shoutbox schreiben. Auch dort ist es wichtig zu erfahren, von WEM die nachricht geschrieben wurde.

    Also in dieser Form:

    "USERNAME sagt: Hallo miteinander!"

    Eben diesen Username würde ich gerne von anfang an irgendwo speichern, wie in einer Art kleinem Forum, der benutzer bleibt also für die Dauer seines Aufenthaltes "eingeloggt".
     
  6. kazhar

    kazhar Viertel Gigabyte

    ein klares "nicht dass ich wüsste".

    wenn du ohnehin eine datenbank benutzen willst lass das htaccess sein und bau dir eine cookie basierte lösung. http://www.selfphp.de/praxisbuch/praxisbuch.php?group=35
     
  7. Ich kenne mich damit halt nicht allzu gut aus und wollte mir daher erstmal Ideen einholen, eh nich 20 mal anfange und alles verwerfe.

    Daher würde mich einfach interessieren was wohl die eleganteste Methode wäre um die beschriebenen Dinge zu realisieren.
    Mit cookies und co kenne ich mich kein Stück aus - außer mit dem Löschen. :aua:

    Dies macht mich allerdings stutzig und ich frage mich ob ich dann überhaupt soetwas mit cookies realisieren kann:

    Im übrigen liegt mein webspace bei 1und1, dort habe ich folgende Äußerung gefunden:
    "PHP läuft bei 1&1 WebHosting als CGI. Damit funktioniert eine Authentifizierung per Script nicht (siehe: >> http://php3.de/manual/de/features.http-auth.php)."
     
  8. kazhar

    kazhar Viertel Gigabyte

    cookies sind einfach eine möglichkeit "informationen" (in deinem fall das login) im browser zu deponieren. diese cookies können für die aktuelle sitzung (session cookie) oder auch "für länger" ("angemeldet bleiben") vorgehalten werden.

    die daten im cookie werden bei jedem zugriff auf die seite (die sie gesetzt hat) im header mitgesendet und damit kann der webserver (bzw das dahinter sitzende php oder cgi) damit arbeiten.

    wenn du willst schau dir mal http://81.189.211.166/ an. im form ganz unten kannst du unter anderem ein cookie setzen und nachsehen wie der datensatz in den nächsten anfragen an den server übertragen werden
     
  9. kalweit

    kalweit Hüter der Glaskugel

    Diese Probleme lassen sich komplett umgehen, wenn der Apache als Modul und nicht als CGI installiert ist. Es hat sogar den Vorteil, dass das alles komplett ohne clientseitige Sessions-IDs oder Cookies funktioniert.

    -> http://de.php.net/manual/de/features.http-auth.php
     
  10. "PHP läuft bei 1&1 WebHosting als CGI. Damit funktioniert eine Authentifizierung per Script nicht (siehe: >> http://php3.de/manual/de/features.http-auth.php)."

    Php scheint also als cgi zu laufen, womt es nicht gehen dürfte, richtig?
     
  11. kalweit

    kalweit Hüter der Glaskugel

    ...richtig - bei 1+1 funktioniert die Methode nicht. Dein Mittel der Wahl wären Sessions [1], welche aber wirklich sicher nur über eine SSL-Verbindung funktionieren. Ansonsten besteht zumindest die theoretische Möglichkeit der Übernahme der Session durch einen anderen Benutzer. Weiterer Nachteil: damit lassen sich nur Inhalte und keine Dateien selbst schützen. Um Letzteres ebenfalls zu erreichen, bedarf es einiger Programmiertricks.

    [1] http://www.php-faq.de/ch-version4_session.html
     
  12. Und mit so einer session bleibt der user für die dauer des aufenthalts auf der website dann quasi eingeloggt und kann unter seinem namen files uploaden und nachrichten schicken, indem ich den usernamen in einer variablen übergebe?

    Denn falls dies nicht geht, kann ich auch wieder auf die simple .htaccess-variante zurückgreifen, muss mir dann überlegen, wie ich umgehe, dass der user bei jedem upload bzw schreiben einer nachricht, erneut seinen namen angeben muss...
     
  13. BdotGdot

    BdotGdot Byte

    Wenn man eine Session eröffnet, bleiben alle Eingaben solange erhalten, wie die Session dauert. Man kann auf jeder Seite auf alles zugreifen.
     
  14. kazhar

    kazhar Viertel Gigabyte

    das ist der sinn der sache :D

    normalerweise verwendet man aber nicht den benutzernamen, sondern eine sessionID, die in der datenbank erzeugt/hinterlegt wird.

    ablauf:
    1) der benutzer loggt sich mit user/passwort ein
    2) php überprüft ob in der datenbank (z.b. in der tabelle benutzer) die benutzername/passwort kombi existiert
    wenn ja wird eine sessionID generiert, in der db gespeicher (tabelle session) und per cookie übertragen. wenn nein kommt die rückmeldung "unbekannter benutzer/falsches passwort"
    3) jedesmal wenn der benutzer auf deiner seite etwas anklickt, rauf- oder runterlädt wird deinem server das cookie mitgeliefert. mit der darin enthaltenen ID läst sich der benutzername ermitteln und eventuelle zugriffsrechte durchsetzen.
     
  15. Das klingt alles sehr gut. Ist soetwas auf einem 1und1-Server realisierbar?
    Und kann ich dann mit dieser Methode den Benutzernamen des eingeloggten Benutzers auslesen? Dann darum geht es ja hier...

    Der User soll nicht bei jeder Nachricht oder bei jedem Upload einer Datei extra seinen Namen angeben müssen, damit die Anderen auch so wissen, wer der Autor der Na chricht bzw datei ist.

    Wenn das so alles realisierbar ist - in der Theorie wie in der Praxis - dann werd ich mich jetzt wohl mal daran machen (müssen) diese cookie/session-variante zu erlernen.
    Ist das objektiv betrachtet schwer für einen Laien? Einige Grundkenntnisse von php habe ich, aber wirklich nur sehr geringe.
    gruss lucky
     
  16. kazhar

    kazhar Viertel Gigabyte

Thread Status:
Not open for further replies.

Share This Page