PHP Sicherheit

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    PHP Sicherheit

    Hiho zusammen

    Auf meinem FTP Server liegt ein PHP-File, welches auf meine MySQL Datenbank zugreift.
    In diesem PHP Skript stehen meine Zugangsdaten für den Zugriff auf die Datenbank.

    Ist es möglich an die Logindaten, die in der PHP Datei stehen, zu kommen?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Nein.
    Alles was php ist wrd von deinem Browser sagen wir mal Unsichtbar gemacht es sei denn es hat jemand zugriff auf deinen FTP Server dann kann er die Daten auslesen

    Hey,
    Wenn du get benutzt und es direkt einsetzt, kann es für SQL Injection benutzt werden.
    Am besten immer escapen: php.net/manual/de/function.mysql-real-escape-string.php

    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    Nein es wirde auch nichts angezeigt solange zb. beim Apache PHP läuft wird die PHP Datei vorher durchlaufen das PHP Script zeile für Zeile durchgegangen und nur die HTML / XML / JSON Sachen ausgegeben.

    Zu beachten:

    XSS
    SideJacking
    SQL-Injetion

    Patrick1993 schrieb:

    deinem Browser sagen wir mal Unsichtbar gemacht
    Der Browser macht hierbei überhaupt nichts, außer das darstellen was ein PHP Script ausgibt.

    Ansonsten kann es sehrwohl vorkommen das bei ungünstigen PHP oder Serverfehlern das Script nicht durch den PHP Interpreter geparsed wird und somit ggf. als ASCII Ausgabe an dne Browser zurück kommt.
    Deswegen macht es Sinn die Connectiondaten in eine kleine extra PHP Datei zu packen, diese in ein extra Ordner, welcher über htaccess für jeglichen Zugriff von außen gesperrt ist. Diese Datei wird dann in der Datie includet in der die Verdingungsdaten benötigst.
    Okey. Sagen wir so, ich will nur nicht das man mit kleinem Aufwand an das PHP Skript kommt, und das ist ja nicht der Fall (Normale 0815 Anwender ;D)

    Wie kann ich SQL-Injection verhindern? Mein Code sieht momentan so aus:
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. // Skript geschrieben am 24.10.2011 von Dancger
    3. // Verbindungsinformationen zur Datenbank
    4. $dbhost = "localhost";
    5. $dbname = "*******";
    6. $dbuser = "********";
    7. $dbpass = "******";
    8. // Variablen festlegen
    9. $time = $_GET['time'];
    10. $name = $_GET['name'];
    11. $message = $_GET['message'];
    12. // Verbindung zur MySQL Datenbank herstellen
    13. mysql_connect($dbhost, $dbuser, $dbpass)or die("Error:1");
    14. //Zugriff überprüfen
    15. $verb = mysql_select_db($dbname);
    16. if ($verb)
    17. {
    18. //Variablen überprüfen
    19. if ($time == "")
    20. {
    21. echo("Error:3");
    22. exit;
    23. }
    24. if ($name == "")
    25. {
    26. echo("Error:4");
    27. exit;
    28. }
    29. if ($message == "")
    30. {
    31. echo("Error:5");
    32. exit;
    33. }
    34. //Daten eintragen
    35. $sql = "INSERT INTO chat (time, name, message) VALUES ('$time', '$name', '$message')";
    36. //Überprüfung
    37. $eintrag = mysql_query($sql);
    38. if ($eintrag)
    39. {echo("OK");}
    40. else
    41. {echo("Error:6");}
    42. }
    43. else
    44. {
    45. die("Error:2");
    46. }
    47. //Verbindung schliessen
    48. mysql_close();
    49. ?>

    Falls der Code nicht sauber ist, ich hab am Freitag mit PHP angefangen, Verbesserungsvorschläge erwünscht :P

    mcandy007 schrieb:

    Nein es wirde auch nichts angezeigt solange zb. beim Apache PHP läuft wird die PHP Datei vorher durchlaufen das PHP Script zeile für Zeile durchgegangen und nur die HTML / XML / JSON Sachen ausgegeben.
    Auf "meinem" Server läuft:
    • Apache/2.2.16 (Debian)
    • MySQL-Client-Version: mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $
    • PHP Erweiterung: mysql

    Dodo schrieb:

    Ansonsten kann es sehrwohl vorkommen das bei ungünstigen PHP oder Serverfehlern das Script nicht durch den PHP Interpreter geparsed wird und somit ggf. als ASCII Ausgabe an dne Browser zurück kommt.
    Naja das wird auch nicht tagtäglich passieren. Also nehm ich das mMn kleine Risiko in Kauf.

    Dodo schrieb:

    Deswegen macht es Sinn die Connectiondaten in eine kleine extra PHP Datei zu packen, diese in ein extra Ordner, welcher über htaccess für jeglichen Zugriff von außen gesperrt ist. Diese Datei wird dann in der Datie includet in der die Verdingungsdaten benötigst.

    Das versteh ich nicht. Was meinst du mit htaccess? Wenn ich richtig gegoogelt habe erlaubt dieser nur den Zugriff dem PHP File, was heisst: Wenn das PHP Skript nicht ordnungsgemäss augeführt wird, wird auch kein Passwort "angefordert"?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dodo schrieb:

    Deswegen macht es Sinn die Connectiondaten in eine kleine extra PHP Datei zu packen, diese in ein extra Ordner, welcher über htaccess für jeglichen Zugriff von außen gesperrt ist. Diese Datei wird dann in der Datei includet in der die Verdingungsdaten benötigst.
    Aber bitte mit der Dateiendung ".php", weil der Server die Datei sonst nicht parsed und den Inhalt (sprich: Deine Daten) an den Browser weitergibt. EIne häufig auftretende Sicherheitslücke. (Häufig haben config-Dateien von Fertigskripten die Dateiendung ".inc"; das ist fail)
    Auch, wenn man die Datei mit htaccess schützt, sollte man auf sowas achten. Man weiß ja nie.
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

    htaccess hat btw. nichts mit PHP zu tun, sondern regelt u.a. einfach die Zugriffsrechte auf Dateien und Ordner. Hast du also eine htaccess datei in einem Ordner die den kompletten Zugriff von außen verweigert, kann auch niemand das config-File aufrufen. Ein Php Script kann aber sehrwohl das Script in den geschützten Ordner includen.

    Bsp:

    /config/db.php

    PHP-Quellcode

    1. <?php
    2. // db connection daten
    3. ?>


    /index.php

    PHP-Quellcode

    1. <?php
    2. include("/config/db.php");
    3. //mysql abfragen hier
    4. ?>


    Dazu in dem Ordner config eine htaccess Datei

    /config/.htaccess

    Quellcode

    1. Order deny,allow
    2. Deny from all