Ankündigung

Einklappen
Keine Ankündigung bisher.

Sichere Vebindung mit MySQL & .htaccess erstellen + Vars

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sichere Vebindung mit MySQL & .htaccess erstellen + Vars

    Hi PHP'ler,
    ich suche einen Weg, zu einer MySQL-Datenbank eine sichere Verbindung herzustellen, am besten noch Automatisch, ohne das jemand die Datei mit den Logindaten einlesen kann.
    Kann mir jemand einen oder mehrere Wege sagen wie dies zu realiesieren ist?

    Info: Dieses Projekt soll veröffentlicht werden, darum ist die Sicherheit wichtig.

    Frage2:

    Ich habe mittlerweile 2 PHP-Bücher gelesen, doch wird in keinem erklärt wie .htaccess-Datein erstellt werden mit.

    Kennt jemand ein Tutorial oder selber die Lösung und vieleicht alle n der .htaccess verwenbaren variablen?

    Danke für jede Antwort
    Greetz Noxx

  • #2
    Re: Sichere Vebindung mit MySQL

    Zitat von noxx
    ich suche einen Weg, zu einer MySQL-Datenbank eine sichere Verbindung herzustellen
    In welcher Hinsicht sicher, also vovor gesichert?

    Zitat von noxx
    Info: Dieses Projekt soll veröffentlicht werden, darum ist die Sicherheit wichtig.
    Die meisten "veröffentlichten" Projekte kommen ohne aus...

    Zitat von noxx
    Ich habe mittlerweile 2 PHP-Bücher gelesen, doch wird in keinem erklärt wie .htaccess-Datein erstellt werden
    Hat ja auch nicht direkt mit PHP zu tun.

    Zitat von noxx
    bzw. wie man Bspw. Userdaten erhält.
    ganzer Satz vielleicht?

    Zitat von noxx
    Kennt jemand ein Tutorial oder selber die Lösung?
    Google kennt ganz viele:
    http://www.google.de/search?hl=de&ie...a=lr%3Dlang_de
    mod = master of disaster

    Kommentar


    • #3
      zu frage 1:
      meinst du eine ssh verschlüsselung?
      zu frage2:
      morgen könnte ich dir mehr sagen!
      [FONT="Book Antiqua"][I]"Nobody is as smart as everybody" - Kevin Kelly[/I]
      — The best things in life aren't things[/FONT]

      Kommentar


      • #4
        Auzug aus einem forum:

        _____________________________________-

        htaccess Schutz für jegliche Dateien ( für Fortgeschrittene)

        Ich kann nicht genau sagen, welche Anforderung es braucht, um dies zu nutzen, bei mir hat es gedauert, aber ich musste es mir ja zusammenstricken, wohingegen Ihr mein Tutorial nehmen könnt
        PHP wird hier nicht zwangsweise benötigt, sollte aber für einen vollständigen Schutz beherrscht werden und mindestens rudimentär Verstanden werden.


        Ich führe hier zwei Arten eines Schutzes vor.
        Voraussetzung ist, dass Ihr wisst, was ein Server ist und wie man bereits mit .htaccess umgeht. Ich verweise auf
        SelfHTML

        Das ist sehr gut!

        Für alle, die Erfahrung haben, hier weiterlesen:

        Erste Version:
        Also, im ersten Beispiel verwende ich .htaccess mit dem Mod_Rewrite Modul, welches für mich ein Optimum darstellt. (Lokal bitte Mod_Rewrite in der httpd.conf vom Apache auskommentieren.)
        Kurzer Ablauf des Problems: Sensible Daten sollen nur für registrierte oder private User verwendet werden, können diese nicht in eine Datenbank gepackt werden, wie z.B. Bilder, muss man diese extern schützen.
        Ich gehe von zwei Möglichkeiten aus, erstens: User kommt normal per Link durch PHP oder durch sonst was, muss sich einloggen usw. und wird ggf. dann zu den Bildern(ich nehme in meinem Beispiel Bilder) geleitet. Alles kein Problem, den Passwortschutz der PHP Scripte will ich nicht näher ansprechen, dies kann man nachholen, in dem man z.B. PHP lernt .
        Jetzt zum Problem (zweite Möglichkeit): Wenn jemand nun den Pfad zum Bild direkt kennt, sei es, der eingeloggte User verrät es, indem er mit der rechten Maustaste auf das Bild klickt oder wenn man irgendwoher sonst die URL kennt, so kann PHP diese Bilder regulär nichtm ehr schützen, da es komplett an der PHP vorbei geht.

        Hier kommt die erste, gute Variante ins Spiel.
        Wir haben den Ordner http://meine-adresse.de/privat/bilder/ , in den Bilder Ordner tun wir jetzt die folgende .htaccess Datei rein:
        Code:
        RewriteEngine on
        Options FollowSymLinks
        RewriteRule .* ../check.php [NC]

        Kurz gesagt, hiermit aktivieren wir die Rewrite Engine, welche das Modul Mod_Rewrite darstellt. Mit RewriteRule .* ../check.php [NC] wird jeder Zugriff auf diesen Ordner für jede Datei zur check.php umgeleitet, welche eine Ebene höher liegt, hier im Ordner /privat/, das NC bewirkt, dass man auf die Groß- und Kleinschreibung nicht zu achten braucht.

        Erstellt jetzt eine PHP Datei mit dem Namen check.php, und fügt diesen Inhalt dort komplett ein:
        PHP-Code:
        <?php
        $name=basename($_SERVER['REQUEST_URI']);
        if ($name=="testbild.jpg"){
        readfile(".".$_SERVER['REQUEST_URI']);
        } else {
        die("Ungültige Angabe");
        }
        ?>

        Schickt diese in den Ordner, wo der Bilder Ordner liegt, aber auf keinen Fall in den /bilder/ Ordner!

        Ruft jetzt mal Testweise den Ordner /bilder/testbild.jpg auf, es spielt keine Rolle, dass das Bild nicht existiert, wenn im Browser "Ungültige Angabe" oder sogar das Bild erscheint (falls Ihr dort eins mit dem Namen testbild.jpg eingefügt habt), so funktioniert die .htaccess tadellos, wenn nicht, müsste ein "Internal Server Error 500" kommen, dass bedeutet, der
        Server nimmt eure .htaccess nicht an, entweder ist Mod_Rewrite nicht an, oder es liegt ein anderer Fehler vor, aber dass ist erstens nicht Teil dieses Tutorials und zweitens kein Problem, dann geht Ihr einfach zur zweiten Version meines .htaccess Tutorials.
        Kleine Erklärung: Ruft man irgend ein Bild im Ordner /bilder/ auf, so wird in jedem Fall eine Umleitung zur check.php geschickt, ohne Ausnahme. Die check.php, hier eine sehr simple, prüft, ob das Bild „testbild,jpg“ heißt, oder nicht, wenn nicht, dann kommt "Ungültige Angabe", wenn es doch existiert, dann kommt readfile zum Einsatz und gibt das Bild sofort aus. Vielleicht wundert sich jemand, warum ich dort ".".$_SERVER... geschrieben habe, das ".". ist nötig, weil $name nur noch den Namen des Bildes enthält, und mit readfile($name) würde das PHP Script versuchen das jeweilige Bild aus dem Ordner zu holen, wo die check.php liegt, und da gibt es das Bild ja nicht. Dieser Pfad muss immer an den jeweiligen Pfad angepasst werden!
        P.S: Man sollte eventuell vor der Ausgabe einer JPG Datei, den header('Content-type:image/jpeg'); setzen oder halt die nötigen header für die jeweilige Dateiausgabe optimieren, denn es kann sein , dass sonst das Bild als ASCII (Plain Text) ausgegeben wird und dass ist nicht zu gebrauchen.
        Meine check.php kann man, oder besser gesagt, sollte man durch eine gescheite Passwort Abfrage ändern, dies hier ist nur ein Beispiel, wichtig ist die Verwendung von readfile!!!



        Zweite Version:
        Es gibt viele Webhoster, die das Mod_Rewrite Modul nicht aktiviert haben, man kann denen eine Mail schreiben oder meine Alternative nutzen.
        Vorraussetzung ist, dass der Server allgemein .htaccess Passwortabfragen zulässt, was aber in der Regel der Fall ist.

        Es verläuft im Grunde alles analog zum ersten Beispiel, der Unterschied ist nur, dass in dem Falle keine Umleitung auf die check.php erfolgt, wenn man die direkte URL eingibt. Ist zwar nicht so schön, aber .htaccess via Browser zu knacken würde ein Weilchen dauern.
        Es gibt unzählige Tutorials, wie man mit .htaccess ein Passwortbereich aufbaut, daher will ich das Rad nicht neu erfinden, sondern verweise wieder auf http://selfhtml.teamone.de/diverses/htaccess.htm

        Die .htaccess Datei müsste jetzt ungefähr so aussehen:
        Code:
        AuthName "geschuetzer Bereich"
        AuthType Basic
        AuthUserFile /home/meine-adresse/private/.htpasswd
        require valid-user
        Eine zweite .htpasswd Datei, auf die in der .htaccess verweisen wird, wird in diesem Fall in dem gleichen Ordner, wo auch der Bilder Ordner drin ist. Generell sollte man die .htpasswd außerhalb der für Internet-User zugängliche Bereiche legen, aber oft ist dass nicht möglich.

        Die .htpasswd Datei setzt sich aus
        PASSWORT:mit_crypt_codiertes_passwort
        zusammen.

        Der springende Punkt ist, dass eine PHP Datei, welche die Verwaltung übernimmt, die Datei nur mit readfile lesen kann.


        Die zweite, hier verwendete, Methode ist keine Verbesserung oder Neuerung des Scriptes.
        Die Methode soll nur zeigen, wie man ohne die Rewrite Engine an sein Ziel kommt.

        Fazit: Beides sind gute Methoden um den unautorisierten Zugriff mit der direkten Methode zu unterbinden.


        Ich bedanke mich bei mal_anders für das Mitlösen des Problems.

        Fragen und Anregungen bitte hier posten


        In den beiden Beispielen müsst Ihr die x.htaccess Datei umbenennen in .htaccess.
        Achtung: Bei der .htaccess muss man den Pfad richtig anpassen und evtl. das x bei x.htaccess entfernen. Bei Windows lokalen Servern müsst Ihr in der httpd.conf den Wert für .htaccess zu x.htaccess umbenennen, da Windows Dateinamen, die mit einem Punkt anfangen, kaum verarbeiten kann.

        Username und Passwort für die htaccess2 Beispiele ist User "test" und Passwort "test".
        Beide Beispiele sind sofort verwendbar, einfach uploaden und im Browser aufrufen.

        Beides wurde von mir getestet.

        Ich weise darauf hin, dass das anapssen der .htaccess Pfade ein Problem für unerfahrene User sein kann

        MM

        Edit: die beispieldaten zu diesem tutorial befinden sich weiter unten (im 10. beitrag)
        [FONT="Book Antiqua"][I]"Nobody is as smart as everybody" - Kevin Kelly[/I]
        — The best things in life aren't things[/FONT]

        Kommentar


        • #5
          Re: Sichere Vebindung mit MySQL

          Zitat von Waq
          Zitat von noxx
          Info: Dieses Projekt soll veröffentlicht werden, darum ist die Sicherheit wichtig.
          Die meisten "veröffentlichten" Projekte kommen ohne aus...
          Und wie kann ich dann mein Projekt vor Hackern schützen? schließlich sollen die Datenbanklogindaten nicht in falsche hände fallen.

          danke phpdummi für das tut, es hat mir weitergeholfen.
          Kennt jemand vieleicht noch einen link, wo alle variablen erklärt werden, die man bei htaccess verwenden kann?

          danke im vorraus
          greetz noxx

          Kommentar


          • #6
            vor hackern willst du dich schützen? :P dazu musst du deine mysql-verbindung eigentlcih ncihts sichern, ausserdem ist das zumeist eh eine lokale verbindung, weil der mysql-server auf der gleichen kiste läuft wie dein webserver. abgesehen davon ist der schutz vor hackern viel mehr aufgabe des admins des webservers indem er diesen sauber wartet / pflegt udn updatet.
            [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
            | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

            Kommentar


            • #7
              kann mir jemand dies erklären?

              AuthType Basic
              AuthName "dein-Bereich(name)"
              AuthMySQLHost localhost
              AuthMySQLCryptedPasswords off
              AuthMySQLDB datenbankname
              AuthMySQLUser dein_db_username
              AuthMySQLPassword dein_db_passwort
              AuthMySQLUserTable db_tabelle
              AuthMySQLNameField loginname
              AuthMySQLPasswordField password
              AuthMySQLKeepAlive Off
              <LIMIT GET POST>
              require valid-user
              </LIMIT>
              greetz noxX

              Kommentar


              • #8
                Der Beitrag wurde verschoben, wegen...
                ... Postings im falschen Forum.

                Bemerkung:
                Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

                moved to PHP - Anfänger
                mod = master of disaster

                Kommentar


                • #9
                  das alles geht nur wenn dein apache das passende modul isntalliert hat, was ich bei webspace eher bezweifle. dazu ist dann ein root-server nötig und der kostet zeit, geld und linux-wissen!! :P

                  mfg
                  robo47
                  [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
                  | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

                  Kommentar

                  Lädt...
                  X