Chuckwalla: .htaccess php mysql

Hallo,
auch wenn ich jetzt gleich haue bekomme weil die Lösung wahrscheinlich schon irgendwo steht, schreib ich dennoch. Ich such jetzt schon seit einigen Tagen und werde nicht schlauer.

Um das gehts:

mysql_connect("localhost","benutzer_xy","Passwort_abc") or die ("Keine Verbindung moeglich");  
mysql_select_db("datenbank_cde") or die ("Die Datenbank existiert nicht.");

Jetzt habe ich eine .htaccess angelegt die so aussieht:

.htaccess-Datei für Web-Verzeichnis /service

AuthType Basic
AuthUserFile /genauer Pfad/.htusers
Require user benutzer_xy

End - Custom redirects

und eine .htusers wie folgt:

BenutzerDatei für Web-Projekt

benutzer_xy:Passwort_abc_verschlüßelt_mit_crypt

Frage:
Wie bekomme ich das verschlüsselte Passwort in meinen "mysql_connect"-Befehl?

Danke für eure Hilfe,

Chuckwalla

  1. Hi,
    wieso schreibst du das pw nicht direkt gleich rein?

    sonst kannst du das file öffnen und parsen zb.

  2. Tach!

    mysql_connect("localhost","benutzer_xy","Passwort_abc") or die ("Keine Verbindung moeglich");

    mysql_select_db("datenbank_cde") or die ("Die Datenbank existiert nicht.");

      
    Bist du sicher, dass du deinen Besuchern im Fehlerfall einfach so eine schnöde Fehlermeldung an den Kopf werfen willst, für einen Fehler, für den sie nichts können?  
      
    
    > Wie bekomme ich das verschlüsselte Passwort in meinen "mysql\_connect"-Befehl?  
      
    Alles was der Server dir über den Request mitteilen will, steht in $\_SERVER. Wenn da das Passwort drinsteht, kannst du es verwenden, wenn nicht dann nicht.  
      
      
    dedlfix.
    
    1. Tach!

      Wie bekomme ich das verschlüsselte Passwort in meinen "mysql_connect"-Befehl?
      Alles was der Server dir über den Request mitteilen will, steht in $_SERVER. Wenn da das Passwort drinsteht, kannst du es verwenden, wenn nicht dann nicht.

      Achso, und dann gibt es da noch HTTP authentication with PHP, also ohne den Webserver damit zu behelligen.

      dedlfix.

  3. Frage:
    Wie bekomme ich das verschlüsselte Passwort in meinen "mysql_connect"-Befehl?

      
    $_SERVER["PHP_AUTH_USER"];  
    $_SERVER["PHP_AUTH_PW];  
    
    

    http://php.net/manual/de/reserved.variables.server.php

  4. Hi Chuckwalla,

    auch wenn ich jetzt gleich haue bekomme weil die Lösung wahrscheinlich schon irgendwo steht, schreib ich dennoch. Ich such jetzt schon seit einigen Tagen und werde nicht schlauer.

    da kann ich mit einer noch mehr anfängerischen Gegenfrage drüber ;) mit bitte um Aufklärung.

    Also,
    ich benutze auch mysql mit php, VB, und (C++, wenn ich es doch mal irgend wann richtig lehrnen würde).
    Die Berechtigungen der DB's (User, Pass) lege ich mit phpmyadmin fest. Die ich dann auch z.B. mit DSN oder direkt anspreche.

    Wenn user beim surfen auf bestimmte Seiten nur mit passwort dürfen, benutze ich .htaccess wie du beschrieben hast in den entsprechenden Verzeichnissen.

    Was ich nicht verstehe:
    Was hat die Ordnersicherheit von Apache mit einer DB in Mysql zu tun? Fügst du  .htaccess in den mysql-ordner mit den DB-files ein?

    grüße aus landshut
    ralphi

    1. Tach!

      Was hat die Ordnersicherheit von Apache mit einer DB in Mysql zu tun? Fügst du  .htaccess in den mysql-ordner mit den DB-files ein?

      Das Verfahren nennt sich HTTP-Authentifizierung. Man kann es zum Schützen von Ressourcen verwenden. Die allerdings müssen nicht zwingend physische Verzeichnisse oder Dateien sein, auch wenn es zumeist dafür verwendet wird. Schau dir mal phpMyAdmin genauer an, besonders seine Optionen zur Anmeldung. Da ist auch HTTP-Auth dabei, allerdings ohne das dafür Webserver-Konfigurationen vorgenommen werden (müssen). Darüber wird nur Nutzername und Passwort abgefragt, mit denen dann 1:1 ein Login-Versuch beim MySQL-Server gestartet wird.

      Der OP wird wohl kaum den Ordner mit MySQLs interner Datenhaltung freigeben, den mit diesem kann man allein und übers Web nichts weiter anfangen. Man müsste die Dateien schon herunterladen und einem eigenen MySQl-Server unterschieben. Also vergessen wir diese Idee wieder, weil zu keiner wirklich sinnvollen Situation führt. Da der OP die Daten zu einer ganz normalen Anmeldung am MySQL-Server verwenden will, drängt sich der Verdacht auf, dass er vielleicht ein Datenbankverwaltungstool à la phpMyAdmin schreiben will, das wie beim PMA zu sehen mit HTTP-Auth abgesichert werden soll. Dass er dazu den Webserver nicht zu konfigurieren braucht, hat er sicher nicht gewusst. Aber vielleicht will er auch was ganz anderes erreichen, für das es andere, bessere Wege gibt.

      dedlfix.

      1. Auch tach,

        also wenn ich dich mal zusammenfassen dürfte:
        es gibt eine interne-auth vom mysql-server, wenn man zB. nur über tcp auf DB's mit standart SQL zugreifen will.
        Das ganze kann man mit einer http-auth verbinden sodas eine offene DB über http geschützt werden kann und oder vielleicht http-externe-auth (nicht SQL)-befehle nutzen kann ähnlich wie DAO-befehle in VB

        wie ich auch rumüberlege - für mich machts keinen sinn das ganze mit http-sicherheit zu verknüpfen
        also .htaccess nur für verzeichnisse - ist doch einfach (verstehe auch ich)

        Chuckwalla - was hast du den für ein 'besonderes' projekt?

        grüße aus LA
        ralphi

        1. Tach!

          es gibt eine interne-auth vom mysql-server, wenn man zB. nur über tcp auf DB's mit standart SQL zugreifen will.

          Das SQL ist in dem Szenario noch nicht weiter relevant. Was mit der über PHP geöffneten Verbindung zum MySQL-Server konkret passiert, ist egal.

          Das ganze kann man mit einer http-auth verbinden sodas eine offene DB über http geschützt werden kann und oder vielleicht http-externe-auth (nicht SQL)-befehle nutzen kann ähnlich wie DAO-befehle in VB

          Ich nehme mal an, dass der MySQL-Server wie üblich gesichert ist, also dass er keine direkten Verbindungen aus dem Internet akzeptiert und dafür beispielsweise nur auf 127.0.0.1 lauscht. Die HTTP-Auth dient in dem Szenario nicht als Zugangsabsicherung. Es werden lediglich die darüber eingegebenen Anmeldedaten für einen Zugang des PHP-Scripts zum MySQL-Server verwendet. Somit hat das PHP-Script eine von den Anmeldedaten abhängige Verbindung. Was auf dieser Verbindung ablaufen kann, ist durch das PHP-Script definiert. Letzlich ist das PHP-Script das Bindeglied, das einen Zugang zum MySQL-Server öffnet und dafür die HTTP-Auth-Daten verwendet.

          wie ich auch rumüberlege - für mich machts keinen sinn das ganze mit http-sicherheit zu verknüpfen

          Nun, der phpMyAdmin macht es so und als Szenario kann ich mir auch grad nur eine DBMS-Verwaltung vorstellen, also dass ein PMA nachgebaut werden soll (mit welchem Funktionsumfang auch immer).

          also .htaccess nur für verzeichnisse - ist doch einfach (verstehe auch ich)

          Ja, aber du nimmst auch an, dass eine HTTP-Authentifizierung auf einen Verzeichnisschutz beschränkt ist. Das ist zwar einer der häufigsten Anwendungsfälle, aber sie ist nicht zwingend daran gebunden. HTTP-Auth kann auch für sich allein genommen lediglich zur Abfrage von Anmeldedaten genommen werden. Im vorliegenden Fall werden sie dann (vermutlich) weiterverwendet, um sich an einem MySQL-Server anzumelden.

          dedlfix.

          1. Ja, aber du nimmst auch an, dass eine HTTP-Authentifizierung auf einen Verzeichnisschutz beschränkt ist. Das ist zwar einer der häufigsten Anwendungsfälle, aber sie ist nicht zwingend daran gebunden. HTTP-Auth kann auch für sich allein genommen lediglich zur Abfrage von Anmeldedaten genommen werden. Im vorliegenden Fall werden sie dann (vermutlich) weiterverwendet, um sich an einem MySQL-Server anzumelden.

            Darüber hinaus ist http-Authentification keine Apache-spezifische Technik, sondern Bestandteil des http-Protokolls. Das sei nur der Vollständigkeit wegen und fürs Archiv erwähnt.
            Und im Übrigen ist auch .htaccess keine Apache eigene Spezifikation.