Ralfi: PHP, MySQL und Sicherheit

Hi,

ich bin gerade dabei, per MySQL und PHP3 einen Benutzerdatenbank aufzubauen. Dabei können sich die Benutzer anmelden und geben Name, Anschrift, EMail usw an. Außerdem muss jeder eine Benutzerkennung (Nickname) und ein Passwort eingeben, um später seine Daten ändern zu können oder auch gewisse Dinge auf der Website machen zu können. Die Daten werden per Formular erfasst und per POST Method versendet. Dann verschluessel ich das Passwort mit PHP per md5 (crypt geht lokal bei mir nicht, aber evtl. verwende ich das eher). Die Daten werden dann in die MySQL Datenbank gestellt. Wer eine AKtion ausführen möchte bzw. seine Daten ändern möchte, gibt Nickname und Passwort ein, woraufhin ich die Daten überprüfe. Stimmt das Passwort überein, darf der Benutzer die Aktion ausführen.

Für wie sicher haltet ihr dieses Vorgehen? Gibt es irgendwelche technischen und sicherheitsrelevanten Probleme? Wie kann ich die Sicherheit noch verbessern? Ich bin für jeden Vorschlag dankbar.

Gruesse aus Hamburch,

Ralfi

  1. Hi Ralfi,

    ich glaube, du musst um auf die DB zuzugreifen nen PWD in der PHP Datei eingebe, richtig? Unabhaengig davon, solltest du dir ueberlegen, das wenn PHP mal auf dem Server ausfaellt, die gesamte datei wie sie ist an den Client (meist ja nen browser ;-) gesendet wird, wenn der user dann mal nen blick in den Quelltxt wirft hat er dein gesamtes PHP Script. Das soll nun aber absolt kein Hinweis darauf sein man solle nix mehr in PHP machen, weil es ja irgendwann, so ca. mal auf jedem millionsten server alle tausend jahre mal ausfaellt. (n.B. bei meinem ISP ist es mal ausgefallen, daher weis ich das ;-) Weiterhin spielt es ja auch noch ne Rolle "wie" es ausfaellt ;-) ich glaube die Chancen liegen so bei 0,1% das der PHP Quelltext im nicht interpretiert beim Client landet. Ich wollt es halt nurmal erwaehnt wissen.

    MfG Olli *g*

    1. Hi Olli,

      danke für deine Antwort. Die Gefahr besteht natürlich, nur besteht die ja, wie du schon sagtest, im Prinzip überall, wo PHP verwendet wird. Ich check das mal ab, was der User sieht, wenn PHP ausfaellt, kann man evtl. simulieren.

      Andere Frage in dem Zusammenhang: Hat ein User denn die Möglichkeit, an die nicht interpretierten PHP Dateien zu gelangen, wenn er das will. Zum Beispiel mit Hilfe von einem Offline Reader, der die gesamte Site herunterladen soll? Oder werden dann auch nur die interpretierten Dateien geladen?

      Gruss,

      Ralfi

      1. Hallo Ralfi !

        Andere Frage in dem Zusammenhang: Hat ein User denn die Möglichkeit, an die nicht interpretierten PHP Dateien zu gelangen, wenn er das will. Zum Beispiel mit Hilfe von einem Offline Reader, der die gesamte Site herunterladen soll? Oder werden dann auch nur die interpretierten Dateien geladen?

        Falls der Parser von PHP3 nicht ausfällt, kommt der Offline Reader nicht an die Quellen, da er im Prinzip ja nichts anderes als ein Browser ist.

        Mfg.

        Florian Neumeyer

    2. Hi miteinand..
      einen workaround für dieses Problem gibt es aber auch, man definiert einen PHP-Include-Path, der _AUSSERHALB_ des http-trees liegt, in dem man alle sicherheitsrelevanten lagert (alle mit passwörtern usw.).
      Dann bekommt der ausserordentlich-viel-glück-habende-uninterpretierten-quelltext-lese (phew) nur das <?php include "whatever.php"?> zu sehen.

      bis dann
      gero

  2. Hi!

    Ich bin zwar kein Profi, was das betrift, aber das Sicherheitsleck liegt hier meiner Meinung nach eher im unverschlüsseltem übertragen des Paßwortes vom Client zum Server. Dies könntest du mit dem Aufbau einer secure Connection (https) umgehen.

    Grundsätzlich finde ich es ziehmlich verwunderlich, wieviele Dienste mit persönlichem Login angeboten werden, bei denen der username und das Paßwort unverschlüsselt übertragen werden. (e-mail-Anbieter, Web-Provider, etc.)

    mfG
    BRAND

    1. Hi,

      danke für die Info. Hab ich mir sowieso schon fast so gedacht. Dumm nur das SSL bei meinem Provider pro Monat extra kostet. Aber die Investition sollte man evtl. dann mal angehen...;-)

      Gruss,

      Ralfi

    2. Ich bin zwar kein Profi, was das betrift, aber das Sicherheitsleck liegt hier meiner Meinung nach eher im unverschlüsseltem übertragen des Paßwortes vom Client zum Server. Dies könntest du mit dem Aufbau einer secure Connection (https) umgehen.

      Die Forum-Suche ist gerade irre langsam, deshalb ohne Archiv-Link:

      Zu diesem Thema habe ich mal im Kontext von .htaccess etwas gepostet.
      Nimmt man nicht "AuthType Basic", sondern "AuthType Digest", dann erwartet Apache die Passworte bereits MD5-codiert.
      Nur leider ist derzeit anscheinend noch kein Browser in der Lage, das zu liefern ...