Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenschutz-Konforme Multiuser-Plattform programmieren

Einklappen

Neue Werbung 2019

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

  • Datenschutz-Konforme Multiuser-Plattform programmieren

    Hi zusammen,

    ich programmiere bereits einige Jahre mit PHP und MySQL und habe schon die ein oder andere Anwendung für meienn Arbeitgeber programmiert.
    Die Themen DAtenschutz und Sicherheit waren bei diesen Anwendungen eher uninteressant da keine sensitiven Daten darin gespeichert sind und die Anwendungen für Hacker somit uninteressant sein dürften.

    Nun möchte ich aber gerne eine öffentliche Anwendung programmieren, bei der sich Personen ähnlich wie bei einem Forum anmelden können (inkl. gesendetem Email-Link zur Aktivierung usw) und bräuchte hier eine kurze Starthilfe / eure Meinung.
    1. Was wäre eure Empfehlung bzgl. Framework? Laravell?
    2. Was muss grundsätzlich zum Thema Datenschutz beachtet werden? Wenn ein User z.B. in der Plattform seine Kontodaten hinterlegt könnte ich als Datenbank-Admin ja theoretisch direkt in die Datenbank gehen und dann die Kontodaten sehen.
      Somit müssten doch alle DAten (auch Adresse, Passwörter etc.) KOMPLETT verschlüsselt in der MySQL-Datenbank abgelegt sein, oder sehe ich das falsch?
      Leistet so etwas Laravell (oder ein anderes Framework) automatisch.
    3. Wie sieht es mit Parameter-Übergabe von Werten aus? Diese sollten doch idealerweise immer per POST erfolgen, oder? Denn wenn Sie per Get übergeben werden könnte jemand diese ja beliebig anpassen.
      Dummes Beispiel (das es so natürlich niemals geben wird): http://www.meine_domain.de/kontostan....php?user_id=1

      Hier könnte jemand ja dann einfach die 2 draus machen und hätte den Kontostand des Users 2.
    4. Auch in anderen Bereichen gibt es ja wahrscheinlich zahlreiche Stolperfallen, in die man fallen kann (z.B. Hackerangriff über Eingabeformular (SQL injection) usw.
    Lange Rede, kurzer Sinn:
    Was ist denn der schnellste und beste Weg um eine "Stand der Technik" und vor allem "Stand der SICHERHEITS-und DATENSCHUTZ-Technik/Anforderun"-komforme Anwendung mit PHP / JQuery / MySQL zu programmieren?
    Welches Framework ist das beste?

    Oder brauche ich gar kein Framework und kann beispielsweise irgendwie global bei PHP / MySQL einstellen, dass ALLE Daten verschlüsselt übertragen werden sollen.

    Viele Grüße und danke schon mal für euren Support.


  • #2
    1) Welches Framework du verwendest ist egal, achte nur darauf das es eins ist welches noch aktiv weiterentwickelt wird.
    2) Die Einträge in der DB verschlüsseln kann man machen, der Server braucht aber ja den Schlüssel zum entschlüsseln der Daten um sie dem User wieder anzuzeigen. Wenn ein Hacker also auf den Server gelangt ist, hat er auch den Schlüssel zum entschlüsseln der Daten. Anders sieht es aus, wenn du die Daten zb. mit dem User Passwort verschlüsselst, hier müsste der User aber jedes mal sein Passwort eingeben um die Daten zu sehen.
    3) Kontodaten brauchen nicht verschlüsselt werden, so lange du keine Zugänge zu den Konten speicherst. IBAN/BIC stehen auf vielen Briefköpfen etc. Bei Kreditkarten solltest du aber zb. die Prüfsumme nicht mit speichern und den User lieber jedes mal die Eingabe überprüfen lassen.
    4) Parameter welche über GET oder POST bzw. generell von außen reinkommen, solltest du in deiner Anwendung validieren. Wenn User 1 den Parameter user_id=2 übergibt, solltest du Überprüfen ob der User überhaupt die Berechtigung hat auf den Datensatz mit der ID 2 zuzugreifen.

    Kommentar


    • #3
      Deine Probleme liegen auf einer anderen Ebene. Du machst den zweiten, dritten und vierten Schritt schon vor dem ersten.

      1. Schau, was die datenschutzvrrordnungen zu dem Thema sagen. Da gehört etwas Recherche zu.
      2. Fang erst mal damit an, ein Fundament zu legen. Einige deiner Aussagen zeigen, dass dir teils doch noch ziemlich Erfahrung fehlt..

      Kommentar


      • #4
        Hi,

        ich hab nun per SSH / Composer bei meinem Hoster "allinkl." Laravel zum testen installiert.
        Nun wolllte ich noch die das Paket "breeze" installieren.

        Nach Ausführen der Anweisung "composer require laravel/breeze --dev" bekomme ich die folgende Rückmeldung im Terminal:

        [InvalidArgumentException]
        Package beyondcode/breeze has a PHP requirement incompatible with your PHP version, PHP extensions and Composer version

        Ich schnalls aber nicht, weil ich PHP-7.3 und auch die neueste Composer-Version im Einsatz habe.
        Und bei Laravel breeze ist als Requirement (https://packagist.org/packages/laravel/breeze) PHP 7.3 angegeben...

        Könnt ihr mir hier weiterhelfen?

        Kommentar


        • #5
          Was gibt der Befehl php --version raus, wenn du ihn in die Konsole eingibst?
          Weiter solltest du dir erstmal ein lokalen Server wie WAMP installieren und bei dir lokal Entwickeln, bevor du sowas auf dem Server hochlädst. Das macht die Entwicklung einer Anwendung auch deutlich einfacher.

          Kommentar


          • #6
            Zitat von Zeichen32 Beitrag anzeigen
            Was gibt der Befehl php --version raus, wenn du ihn in die Konsole eingibst?
            Hi,

            die Ausgabe ist
            PHP 7.2.34-nm1 (cli) [...]

            Zitat von Zeichen32 Beitrag anzeigen
            Weiter solltest du dir erstmal ein lokalen Server wie WAMP installieren und bei dir lokal Entwickeln, bevor du sowas auf dem Server hochlädst. Das macht die Entwicklung einer Anwendung auch deutlich einfacher.
            Ich probier sowas halt immer gleich gern online, um zu prüfen, ob mein Provider auch alle Voraussetzungen erfüllt bevor ich bei mir alles super zum Laufen bekomme und dann später wenn alles fertig ist, feststelle, dass beim Provider online irgendwelche Pakete fehlen. Klar kann ich dann einen anderen Provider suchen, aber mit allikl. bin ich sehr zufrieden und möchte daher erst immer doa probieren, ob ichs zum Laufen bekomme.
            Außerdem stell ich sowas auch immer gern gleich online, weil ich dann auch mal vom Büro aus oder von irgendwo anders am Projekt weiterbasteln kann.
            Wenn ichs offline hab, muss ich immer zuhause sein, um dran arbeiten zu können.

            Kommentar


            • #7
              Zitat von basementmedia Beitrag anzeigen
              die Ausgabe ist
              PHP 7.2.34-nm1 (cli) [...]
              Wie du siehst, hast du auf der CLI eine andere PHP Version wie bei deinem WebServer. Laut FAQ kannst du es wohl wie folgt anpassen:
              Anleitungen, KAS, SSH, Dateiverwaltung: Änderung der PHP CLI Version (all-inkl.com)

              Zitat von basementmedia Beitrag anzeigen
              Ich probier sowas halt immer gleich gern online, um zu prüfen, ob mein Provider auch alle Voraussetzungen erfüllt bevor ich bei mir alles super zum Laufen bekomme und dann später wenn alles fertig ist, feststelle, dass beim Provider online irgendwelche Pakete fehlen. Klar kann ich dann einen anderen Provider suchen, aber mit allikl. bin ich sehr zufrieden und möchte daher erst immer doa probieren, ob ichs zum Laufen bekomme.
              Außerdem stell ich sowas auch immer gern gleich online, weil ich dann auch mal vom Büro aus oder von irgendwo anders am Projekt weiterbasteln kann.
              Wenn ichs offline hab, muss ich immer zuhause sein, um dran arbeiten zu können.
              Das sind jetzt irgendwie nicht unbedingt Argumente welche eine lokale Entwicklung ausschließen. In der Regel verwaltet man seinen Programmiercode in einer Versionsverwaltung wie Git (GitHub, Gitlab, etc.) und hat dann auch von überall drauf Zugriff.
              Aber jeder wie er mag...

              Kommentar


              • #8
                Zitat von Zeichen32 Beitrag anzeigen
                In der Regel verwaltet man seinen Programmiercode in einer Versionsverwaltung wie Git (GitHub, Gitlab, etc.) und hat dann auch von überall drauf Zugriff.
                Aber jeder wie er mag...
                Ich sehe schon: Ich hab noch viel zu lernen. Mit Versionsverwaltung mit Git hab ich mich noch nie auseinander gesetzt.
                Ich hab das immer manuell verwaltet, also Zwischenstände bei mir lokal gesichert.
                Ich muss mich da dringend mal einlesen. Wenn du ein gutes Tutorial oder einen Lesetipp hast, bin ich dir für eine Empfehlung sehr dankbar.

                Schönen Sonntag euch.
                LG Daniel

                Kommentar


                • #9
                  Zitat von basementmedia Beitrag anzeigen
                  Was wäre eure Empfehlung bzgl. Framework? Laravell?
                  Damit würdest du erstmal nix verkehrt machen.

                  Zitat von basementmedia Beitrag anzeigen
                  Was muss grundsätzlich zum Thema Datenschutz beachtet werden? Wenn ein User z.B. in der Plattform seine Kontodaten hinterlegt könnte ich als Datenbank-Admin ja theoretisch direkt in die Datenbank gehen und dann die Kontodaten sehen.
                  Somit müssten doch alle DAten (auch Adresse, Passwörter etc.) KOMPLETT verschlüsselt in der MySQL-Datenbank abgelegt sein, oder sehe ich das falsch?
                  Leistet so etwas Laravell (oder ein anderes Framework) automatisch.
                  Datenschutz ist eher eine rechtliche Thematik. Hier musst du schauen was du alles beachten und erfüllen musst. Z.B. wenn du Accounts nach 1 Jahr inaktivität löschen musst oder personbezogene Daten entfernen, etc. Sowas kann im nachhinein relativ hässlich werden. Ich würde mir hier dann aber auch nicht den Kopf zerbrechen.

                  Verschlüsselung ist nur ein Baustein und lässt sich auch nicht universell verwenden. Eine Datenbank muss viele Dinge im Klartext vorhalten, ansonsten würde das auf die funktionalität gehen. Jemand der die Kontrolle über das System hat, kann damit auch in die Datenbank schauen. Wenn das kein Mitarbeiter ist, sondern extern verwaltet wird, schließt man ein Datenverarbeitungsvertrag ab. Das ist aber auch wieder so ein rechtliches Thema und kein technisches. Mittlerweile gibt es Datenbanken bei den die Verschlüsselung auf der Clientseite stattfindent, mir ist aber hier keine relationale Datenbank in der Form bekannt. Sicherheitstechnich sehe ich das teilweise auch eher als augenwischerei an.

                  Zitat von basementmedia Beitrag anzeigen
                  [*]Wie sieht es mit Parameter-Übergabe von Werten aus? Diese sollten doch idealerweise immer per POST erfolgen, oder? Denn wenn Sie per Get übergeben werden könnte jemand diese ja beliebig anpassen.
                  Dummes Beispiel (das es so natürlich niemals geben wird): http://www.meine_domain.de/kontostan....php?user_id=1
                  Es spielt keine Rolle ob POST oder GET. Die Parameter können immer manipuliert werden, die Requests können Usern untergeschoben werden. Parameter immer validieren, prüfen ob der User Zugriff hat, Requests die Aktionen auslösen gegen CSRF schützen. Hierbei unterstützt dich Laravel auch.

                  Du solltest dich ggf. auch in allgemeine Sicherheitsthemen einarbeiten. Ein guter Einstieg wäre z.B. die OWASP Top 10. https://owasp.org/www-project-top-ten/ Das sind die 10 häufigsten Sicherheitslücken in Webanwendungen.

                  Kommentar

                  Lädt...
                  X