Ini-Datei vor Lesern schützen

  • Hallo Zusammen :)

    ich habe eine Frage, weiß aber nicht, wie man es genau nennt.
    Ich speichere momentan meine Daten, die ich für mein Programm brauche in einer Ini.
    Das Problem ist, dass der User diese Datei mit einem Editor öffnen kann und manipulieren kann.
    Somit kann es auch möglich sein, die Einstellungen über die Ini zu tätigen, anstatt von der GUI aus.
    Auch ein Fehlablauf des Programms kann hier durch Änderung der Ini ausgelöst werden.
    Ich habe zwar schon viele Dinge abgefangen, doch nun will ich diese Quelle ausschließen.

    Wie mache ich dieses am Besten? Verschlüsseln? Oder gibt es eine andere Dateiart oder sowas?
    Ich meine, der Vorteil einer Ini ist natürlich, dass diese sich leicht auslesen und bearbeiten lässt.

    Ich hoffe ihr habt hier eine Idee.
    Ich bin heute darauf gekommen, da ich meine ganzen Bilder nun in eine dll speichere :)

    Lieben Gruß und vielen Dank,
    Anna

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

    Einmal editiert, zuletzt von AnnaM (25. September 2012 um 16:24)

  • Hallo AnnaM,

    verschlüssseln ist eine Möglichkeit, du solltest dir aber bewusst sein dass man ohne grossen Aufwand den Schlüssel zum entschlüsseln aus dem Skriptetnehmen kann. Zusätzlich kannst du die Datei noch verstecken:

    [autoit]

    FileSetAttrib

    [/autoit]

    damit sie nicht versehentlich gelöscht wird.

    mfg autoBert

  • Hmm, aber wie machen das große Firmen?
    Wo speichert man dann Konfigurationen am Besten? Und vor allem wie?
    Das verschlüsseln ist ja dann nicht so gut, wenn mans auslesen kann :-/

    [ offen ] .INI Datei verschlüsseln

    Also das zum Thema verschlüsseln. hmm.
    Vor allem, wenn es verschlüsselt ist, wie schaffe ich ein speichern wieder in die richtige Sektion und das auch noch verschlüsselt? ?(

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

    Einmal editiert, zuletzt von AnnaM (24. September 2012 um 13:13)

  • Hmm, aber wie machen das große Firmen?


    Die meisten nehmen dafür die Registry und da sie andere Programmiersprachen benutzen sind verschlüsselte Einträge auch schwerer zu entschlüsseln. Ich bevrzuge bei kommerziellen Projekten Einträge in einer Datenbank habe aber trotzdem grundsätzlich das gleiche Problem wie du. Es macht für eine kleine 0815-Anwendung auch keinen Sinn einen aufwendigen (Kopier-)Schutz zu entwickeln da grundsätzlich alles mit entsprechedem Aufwand geknackt werden kann. Wenn ein Anwender meint er müsse seine Daten manuell korrigieren darf er sich auch nicht wundern wenn das Programm unerwartete Nebenwirkungen zeigt. In meinem Fall sind dies meist Umlautprobleme bei dir fehlerhafte Programmabläufe.

    mfg autoBert

  • Grundsätzlich wie Autobert schon schrieb. Ich handhabe das so:

    Erstmal wird geprüft ob die ini existiert, wenn nicht wird eine mit vordefinierten Standardwerten erstellt.
    Danach werden alle Schlüssel geprüft. Im Quellcode befinden sich dafür alle erlaubten Werte für alle Schlüssel oder sofern keine festen Wertvorgaben möglich sind, eine Regel für die erlaubten Werte des Schlüssels.
    Sofern der Wert der ini keinem erlaubten Wert entspricht wird der definierte Standardwert genommen und glechzeitig auch in der ini auf Standard zurückgesetzt.
    Bei Zahlen oder Zahlbereichen ist das recht einfach, sofern nur boolean Strings "True/False" erlaubt sind ebenfalls sehr simpel.
    Wenn Dateipfade erlaubt sind rate ich zu einer Prüfung mit fileexists().
    Bei beliebigen Strings genügt eine Prüfung auf Sonderzeichen/Umlaute die ggf. ersetzt werden müssen und die Stringlänge.

    Hat man all diese Dinge geprüft wüsste ich nicht was ein Anwender noch groß falsch machen könnte um den Programmablauf zu stören.


    Um ein manuelles Verändern der ini zu verhindern muss man diese im übrigen nicht komplett verschlüsseln. Man könnte auch einen Zusatzschlüssel verwenden, welcher eine Checksumme aller Schlüssel enthält. Stimmt die Checksumme nicht wird die ini mit Standardwerten neu erstellt. Klar gilt auch hier, dass man theoretisch leicht durch decompilen an den Checksummen Algorythmus kommt und damit dann letzten Endes auch gültige Checksummen für eigene ini Dateien berechnen oder die Checksummen Prüfung einfach komplett deaktivieren kann.

  • Komplett sicher gibt es nicht.

    Ini-Dateien sind zum lesen und verändern da, deswegen ist es recht wahrscheinlich, dass jemand sie verändert und nichts böses ahnt.

    Deswegen schlage ich vor, eine normale Datei zu nehmen. Du musst einfach die Daten so abspeichern, dass du sie wieder auslesen kannst. Um heimliche Dateienveränderer abzuschrecken sind Binärdaten recht praktisch. Die Dateiendung sollte auch darauf hinweisen. Ich nehme z.B. oft .dat für die geladenen Daten und .sav für gespeichertes.

  • Das klinkt ja echt klasse.
    Wenn es dir nicht so viel mühe macht, könntest du mir ein Beispiel geben, wie ich in diese Datei schreiben und lesen kann?
    So wie in einer ini?

    Vielen Dank :_)

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

  • Naja, dann muss ich mal schauen, was ich mache. Trotzdem danke.
    Lieben Gruß,

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko: