Sandra: WebProgramm Sicher?

Hi Leute,

Ich Programmiere gerade auf PHP und MySQL Basis ein Programm an dem locker 10 Leute gleichzeitig dran arbeiten werden. Das sind dann Buchhalter, Produktion, Außendienst usw...

Ich möchte dieses Programm nun noch Wasserdicht machen vor Angriffen die dem system schaden könnten. Wenn zB ein erfahrener angestellter kenntise von PHP HTML und co besitzt, könnte er das system derzeit über die adresszeile manipulieren indem er Variablen ersetzt und dann den Link per Hand absendet.. das ergebnis kann ins Nirvana führen oder fehlerhafte mysql einträge erzeugen die weiderrum andere fehler bei anderen nutzern hervorrufen könnte...

gibt es eine checkliste für so was?

da gibt es doch bestimmt noch andere möglichkeiten wie zb das man über ein selbst gebasteltes HTML-Tool mit JavaScript auf ein HTML-Formular im Programm bezug nimmt und es um einen dropdown eintrag erweitert etc und dann irgendwelchen unsinn damit zu erziehlen?!
mit getelementbyid oder so?

oder mache ich mir zu viel gedanken?
Sandra

  1. hi,

    Ich Programmiere gerade auf PHP und MySQL Basis ein Programm an dem locker 10 Leute gleichzeitig dran arbeiten werden. Das sind dann Buchhalter, Produktion, Außendienst usw...

    Ich möchte dieses Programm nun noch Wasserdicht machen vor Angriffen die dem system schaden könnten. Wenn zB ein erfahrener angestellter kenntise von PHP HTML und co besitzt, könnte er das system derzeit über die adresszeile manipulieren indem er Variablen ersetzt und dann den Link per Hand absendet.. das ergebnis kann ins Nirvana führen oder fehlerhafte mysql einträge erzeugen die weiderrum andere fehler bei anderen nutzern hervorrufen könnte...

    gibt es eine checkliste für so was?

    Prinzipiell ja. Schränke die erlaubten Parameter ein und zwar so, dass Du die im Script oder CGI-Programm übersichtlich hast und bei Parametern, die nicht zulässig sind, eine entsprechende Fehlermeldung ausgibst.

    Die Values zu den Parametern, nun, die sind oft dynamisch, beispielsweise die Keys von Datensätzen, wo ständig welche dazukommen oder verändert werden. Diese in einem Script zu verwalten, ist natürlich nicht möglich, aber eine Manipulation kann nahezu ausgeschlossen werden, wenn Parameter UND Values in der Kommunikation zwischen Webserver und UserAgent verschlüsselt werden (synchron).

    --roro

  2. Hallo Sandra,

    nein, du machst Dir nicht zuviele Gedanken.Du hast vollkommen recht. Genau das sind die Angriffspunkte die z.B. von Spammern bei Mailformularen genutzt werden.

    Das einzige was Du machen kannst, ist serverseitiges Abfangen solcher Eingaben. Was schon gar nicht geht ist einfach Usereingaben ungeprueft in Datenbankabfragen zu Uebernehmen. Das ist z.B. das Tor fuer SQL-Injections!

    Da der User normalerweise Herr uber seinen Client ist und diesen zu allem bringen kann, was er will ist es die Aufgabe der Programmierer Serverseitig fuer Sicherheit zu schaffen.

    Als Beispiel nehme ich einmal ein Mailformular, in dem man den Empfaenger waehlen kann:

    Es ist einfach, in einer Select Liste Namen aufzufuehern deren Mailadressen gleich in den Optionen stehen. Hier gibt der client die Mailadresse an den Server weiter der sie nimmt und als Zieladresse in eine Mail einfuegt. Jetzt kann man nicht nur locker eine beliebeige Mailadresse dort einfuegen, sondern gleich nen ganzen Haufen und dein Server verschickt lustig Spammails.

    Das kann man umgehen indem nur Codes uebergeben werden. Daskann eine ID sein oder auch der Name des Empfaengers. Wichtig ist, dass das serverseitige tool erst Diese ID intern in eine Mailadresse umwandelt. Schon ist diese Luecke dicht, weil unbekanntes abgefangen und verworfen wird.

    Je nach Eingaben musst Du dir entsprechende sicherungen programmieren. Grundsaetzlich ist ein Web Programm so sicher, wie man es macht.

  3. Ich möchte dieses Programm nun noch Wasserdicht machen vor Angriffen die dem system schaden könnten.

    Mit PHP?   ;) (http://www.golem.de/0612/49448.html http://blog.php-security.org/ sehr empfehlenswert)

    Wenn zB ein erfahrener angestellter kenntise von PHP HTML und co besitzt, könnte er das system derzeit über die adresszeile manipulieren indem er Variablen ersetzt und dann den Link per Hand absendet.. das ergebnis kann ins Nirvana führen oder fehlerhafte mysql einträge erzeugen die weiderrum andere fehler bei anderen nutzern hervorrufen könnte...

    Das riecht mir aber stark nach Programmierfehlern, wenn sowas geht. Du hast doch hoffentlich ein berechtigungssystem, SSL und so am Start?

    gibt es eine checkliste für so was?

    sicheres PHP + sicheren Datenzugriff (SQL Injection) + Rechtesystem + SSL

    da gibt es doch bestimmt noch andere möglichkeiten wie zb das man über ein selbst gebasteltes HTML-Tool mit JavaScript auf ein HTML-Formular im Programm bezug nimmt und es um einen dropdown eintrag erweitert etc und dann irgendwelchen unsinn damit zu erziehlen?!
    mit getelementbyid oder so?

    oder mache ich mir zu viel gedanken?

    Vielleicht, wenn der Krempel im LAN (oder VPN oder so) läuft, dann ja. Im LAN ist (fast) jede Schweinerei erlaubt.   ;)

    1. moin Luddi,

      Das riecht mir aber stark nach Programmierfehlern, wenn sowas geht. Du hast doch hoffentlich ein berechtigungssystem, SSL und so am Start?

      Du weißt doch hofentlich, dass SSL _kein_ Mittel gegen SQL-Injektionen respektive Manipulationen an URIs ist!?

      Ich mache mir Sorgen um Dich ;-)

      --Rolf

      --
      Budu ja!
      1. Moin

        Ich mache mir Sorgen um Dich ;-)

        brauchst nicht, unkraut vergeht nicht.

        gruss

        1. Moin

          Ich mache mir Sorgen um Dich ;-)

          brauchst nicht, unkraut vergeht nicht.

          Naja, ich vergehe auch nicht. Jedenfalls nicht mit 50. Vielleicht mit 60 oder 70!? Wer weiß. Recht schönen guten Abend ;-)

          Viele Grüße an Alle hier im Forum!

          Rolf

          --
          Budu ja!
      2. Du weißt doch hofentlich, dass SSL _kein_ Mittel gegen SQL-Injektionen respektive Manipulationen an URIs ist!?

        Ich mache mir Sorgen um Dich ;-)

        Mach Dir mal keine Sorgen, genau darum habe ich ja auch die Wichtigkeit des sicheren Datenzugriffs auf der Liste gehabt und SQL Injections (explizit ;) erwähnt.

        MKG!
        King^Lully 4.0