Lukas.: Jeder Quelltext auslesbar?

Hallo,

ich habe mal eine Frage. Wenn ich ein Programm schreiben will, dass auf eine DB zugreift, aber auf dem Client des Users läuft, gibt es dann keine Programmiersprache, der der User die Zugangsdaten nicht entnehmen kann?

Java wohl eher nicht, stimmts? C++ hab ich gelesen, das es mit einem Hexeditor ebenfalls möglich wäre.

Aber es kann doch nicht sein, dass z.b. Java-Programmierer nur mit Obfuskation arbeiten?

Kann mir da mal jemand auf die Sprünge helfen? Wie gesagt, es geht in erster Linie um clientseitig laufende Programme.

Lukas

  1. Hallo

    ich habe mal eine Frage. Wenn ich ein Programm schreiben will, dass auf eine DB zugreift, aber auf dem Client des Users läuft, gibt es dann keine Programmiersprache, der der User die Zugangsdaten nicht entnehmen kann?

    Java wohl eher nicht, stimmts? C++ hab ich gelesen, das es mit einem Hexeditor ebenfalls möglich wäre.

    Liegt der Quelltext vor, wie bei Skriptsprachen, ist er, inklusive dort eventuell angegebener Zugangsdaten, auslesbar. Bei anderen Sprachen muss das Programm dekompiliert werden, um an den Quelltext heran zu kommen. Was nun Verbindungsdaten, z.B. für einen Datenbankserver, angeht, die sollten im Normalfall vom Benutzer oder Admin des Rechners anpassbar sein. Damit liegen sie im Klartext vor oder werden zumindest so eingegeben.

    Was ist, deiner Meinung nach, daran falsch?

    Tschö, Auge

    --
    Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
    Terry Pratchett, „Gevatter Tod“
    1. Hi,

      Was ist, deiner Meinung nach, daran falsch?

      Na ich will doch nicht, dass ein User mein Javaprogramm dekompilliert und dann den Datenbankzugang kennt, der ggf. alle möglichen relevanten Daten enthält.

      Ist das so schwer nachvollziehbar?

      Es könnte doch z.b. sein, daß ich ein Messagesystem habe, das alle Nachrichten aller User verwaltet. Dann will ich doch nicht, daß User1 auch die Messages von User2 lesen kann?!

      Na, im Grunde will ich doch seteuer, wer wo wie was lesen kann, usw. Und das will/kann ich ggf. nicht komplett dem DB Rechtesystem überlassen.

      Lukas

      1. Tach,

        Na ich will doch nicht, dass ein User mein Javaprogramm dekompilliert und dann den Datenbankzugang kennt, der ggf. alle möglichen relevanten Daten enthält.

        sobald der Code im Kontext des Users läuft, hast du die Kontrolle darüber verloren; alles, was der User mit den Zugangsdaten machen könnte, kann er auch durch andere Manipulationen am Programm erreichen.

        Es könnte doch z.b. sein, daß ich ein Messagesystem habe, das alle Nachrichten aller User verwaltet. Dann will ich doch nicht, daß User1 auch die Messages von User2 lesen kann?!

        Richtig, deswegen, darf der Account von user1 nicht die Rechte haben, über die API auf die Daten von User2 zuzugreifen, aber das musst du am serverseitigen Ende der API sicherstellen, auf der Clientseite kannst du keine Sicherheit erreichen. Ein Sicherheitskonzept, das darauf beruht, dass ein potentieller Angreifer sich an die Regeln hält, kann nicht funktionieren.

        Na, im Grunde will ich doch seteuer, wer wo wie was lesen kann, usw. Und das will/kann ich ggf. nicht komplett dem DB Rechtesystem überlassen.

        Wenn deine Datenbank nicht die nötigen Tools enthält (oder du nicht für jeden User einen DB-User haben möchtest), um den nötigen Schutz zu liefern; kannst du halt von deinem Client-Code aus nicht direkt auf die Datenbank zugreifen, sondern musst eine Abstraktionsebene haben, die sich darum kümmert.

        mfg
        Woodfighter

      2. Hallo

        Was ist, deiner Meinung nach, daran falsch?

        Na ich will doch nicht, dass ein User mein Javaprogramm dekompilliert und dann den Datenbankzugang kennt, der ggf. alle möglichen relevanten Daten enthält.

        Ist das so schwer nachvollziehbar?

        Ja. Sollte es um ein lokales Programm gehen, braucht der Benutzer die Möglichkeit, die Verbindung zu seiner Datenbank zu konfigurieren. Ist es ein Client-Server-Programm, braucht er die Möglichkeit, die Verbindung zur Serverdatenbank zu konfigurieren oder du gibst die Verbindungsdaten fest vor (was du offensichtlich dein Wunsch ist). Dann bleibt dem geneigten Benutzer immer noch, das Programm zu studieren und, wenn nötig, zum Zwecke weiterer Ermittlungen zu dekompilieren.

        Verhindern kannst du das nicht, auch wenn du das in der Lizenz verbieten kannst.

        Na, im Grunde will ich doch seteuer, wer wo wie was lesen kann, usw. Und das will/kann ich ggf. nicht komplett dem DB Rechtesystem überlassen.

        Du brauchst eine Rechteverwaltung, um die Benutzer voneinander zu trennen, und auf die musst du dich natürlich verlassen können.

        Tschö, Auge

        --
        Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
        Terry Pratchett, „Gevatter Tod“