1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Sicherheitsvorkehrungen für PHP und MySQL

    • Frage
  • Myc0rrhizal
  • 24. September 2006 um 17:57
  • Unerledigt
  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 24. September 2006 um 17:57
    • #1

    Also ich möchte eine web applikation mit php geschtützt auf mysql entwickeln. Ist aber eher noch neuland für mich: Ich wollte also mal eure Meinung über Sicherheitsvorkehrungen einholen: Es geht allgemein um zB login daten speichern, login daten mit sessions speichern und um daten die mit forms an sql datenbanken übergeben werden (query,insert,update).

    Dies ist was ich so aufgeschnappt habe in einschlägiger Literatur:

    • Login Daten für zb die sql datenbank sollte man in einer eigenen datei speichern auserhalb des public webspaces und als include dann in die jeweiligen datein integrieren und als variablen übernhemen
    • Für Fremdaten aus Formularen:

      1. Mit der funktion "strip_tag" spitze klammern und alles was dazwischen ist entfernen zb. $last_name = strip_tag($last_name)

      2.Mit der funktion "ereg" auf syntax überprüfen

      3. Um SQL Injection angriffe zu vermeiden: mit "addslashes" escape zeichen vor jede eingabe hinzuzufügen damit sql die zeichen nur als literale sieht und nie als befehlscode. Nur nötig wenn Magic Quotes in php.ini deaktiviert ist.

    Nun kennt ihr noch andere "tricks und kniffe" wie man seine applikation sicherer machen kann. (mein hoster bietet PHP ver. 5.1.4 und ich schätze MySQL v4 od v4.1)

  • Paulchen
    1
    Paulchen
    Gast
    • 24. September 2006 um 18:27
    • #2
    Zitat von For3st

    [*]Für Fremdaten aus Formularen:

    Wichtigstes Prinzip: Alles, was der Benutzer eingibt, ist als böse zu betrachten. Wenn du das konsequent beachtest, bist du schon mal auf dem richtigen Weg.

    Zitat von For3st

    1. Mit der funktion "strip_tag" spitze klammern und alles was dazwischen ist entfernen zb. $last_name = strip_tag($last_name)

    Lass doch dem Benutzer den Spaß - wenn er unbedingt "<script type="text/javascript" src="irgendwas.js"></script>" heißen will... verwende daher html_entities, und zwar so, dass auch " durch &quot; ersetzt wird (siehe PHP-Dokumentation).

    Zitat von For3st

    3. Um SQL Injection angriffe zu vermeiden: mit "addslashes" escape zeichen vor jede eingabe hinzuzufügen damit sql die zeichen nur als literale sieht und nie als befehlscode.

    mysql_real_escape() verwenden, siehe - Überraschung! - PHP-Dokumentation. Dann können deine Benutzer auch so heißen als wären sie Teile von SQL-Statements.

    Allgemeine Ratschläge fallen mir sonst im Moment keine ein (ich bin auch zu faul um nachzudenken). :shinner:

  • beefy
    13
    beefy
    Mitglied
    Reaktionen
    18
    Punkte
    1.683
    Beiträge
    304
    • 24. September 2006 um 23:06
    • #3
    Zitat von Paulchen

    mysql_real_escape() verwenden


    Paulchen meint mysql_real_escape_string(). Ansonsten, ja: html_entities().

    Wichtig für Security außerdem: register_globals abschalten. Nicht unbedingt aus Securitygründen aber für sinnvolles Programmieren zusätzlich wichtig: Magic Quotes deaktivieren.

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 23. Oktober 2006 um 13:01
    • #4

    Noch ne Frage: Wie sicher ist es mittels $_POST daten, informationen zwischen 2 php seiten zu vermitteln. Kann das jemand locker "abhören"? Macht es sinn die sensibleren daten mittels php zu ver- entschlüsseln?

    Und kann man SESSION variablen abhörn?

  • Paulchen
    1
    Paulchen
    Gast
    • 23. Oktober 2006 um 13:19
    • #5
    Zitat von For3st

    Noch ne Frage: Wie sicher ist es mittels $_POST daten, informationen zwischen 2 php seiten zu vermitteln. Kann das jemand locker "abhören"?

    Lass mal ngrep laufen und schick einen POST-Request an einen Webserver (einfaches HTTP, nicht HTTPS). Du wirst sehen, dass du alles im Klartext lesen kannst.

    Zitat von For3st

    Macht es sinn die sensibleren daten mittels php zu ver- entschlüsseln?

    Was willst du mit PHP ver- und entschlüsseln? Am Client? Geht ja wohl ned. Stattdessen Javascript verwenden? Hm, naja...

    Eher sinnvoll in diesem Zusammenhang: HTTPS statt HTTP verwenden.

    Zitat von For3st

    Und kann man SESSION variablen abhörn?

    So viel ich weiß nicht, jedoch die PHP-Session-ID, die als Teil der URL bzw. als Cookie übertragen wird. Dadurch wird Session-Hijacking möglich; dann ist es für Unberechtigte vielleicht nicht möglich, direkt die SESSION-Variablen auszulesen, aber es ist möglich, mit deiner Session weiterzuarbeiten und an deiner Stelle Unfug anzustellen.

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 23. Oktober 2006 um 14:06
    • #6

    Ok post ist völlig unsicher. Mit verschlüsseln meine ich so die "manuele" Variante von SSL -> Den Datenstring zB den Namen eben so untkenntlich zu machen mit einem algorithmus (im php script, server seitig natürlich), dass man ihn nur lesen kann mit dem richtigen schlüssel. Ist nicht völlig sicher, schon klar, aber gegen einen script kiddies angriff oder sowas gefeit.

    SSL is mir nämlich zu teuer.

  • Simon
    5
    Simon
    Mitglied
    Reaktionen
    1
    Punkte
    211
    Beiträge
    42
    • 23. Oktober 2006 um 15:32
    • #7
    Zitat von Paulchen

    So viel ich weiß nicht, jedoch die PHP-Session-ID, die als Teil der URL bzw. als Cookie übertragen wird. Dadurch wird Session-Hijacking möglich; dann ist es für Unberechtigte vielleicht nicht möglich, direkt die SESSION-Variablen auszulesen, aber es ist möglich, mit deiner Session weiterzuarbeiten und an deiner Stelle Unfug anzustellen.


    Dies kann allerdings erschwert werden, wenn Daten wie zb IP, User-Agent, etc. in die Session gespeichert und auf jeder geschützten Seite mit dem aktuellen Client verglichen werden.

    Weiters sollst du nicht mit ereg arbeiten, sondern mit preg_match (ereg ist zu langsam und veraltet).

    PokerStrategy - Pokercommunity + 150$ geschenkt!

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 23. Oktober 2006 um 16:30
    • #8

    Das mit der IP vergleichen werde ich wohl machen, das klingt logisch und dürfte einfach zu implementieren sein.

    Die Frage ist nun aber:

    Ich möchte eine Seite betreiben die auhc mit Kundendaten handelt, zwar keine hochsensiblen daten, wie creditcard, oder bankeinzug, oder offizielle pins, aber mit halt daten wie name, adresse, email, geldbeträge für rechnungen, etc.

    Bis jetzt werden daten nur mit POST von seite zu seite gehangelt - nun macht es definitiv sinn nun sich ssl anzuschaffen oder eben, die billigere, aber aufwendigere variante, eine mehrfachverschlüsselung in die POST daten zu implementieren?

    Das heißt, kann man, wenn man die spez. seite kennt, ohne probleme post daten abhören? Oder braucht man da schon einige kenntnisse?

    Was meint ihr?

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern