Lernumfang und Projektumfang

Jain. Python Code alleine ist nicht ohne Interpreter lauffähig. Du kannst aber aus deinem Code + Interpreter ein Binary erzeugen, da purzelt dann ein programm.exe heraus. Anleitungen gibt es ein paar online, einfach mal nach "python to exe" suchen.
Das nicht-einsehen-können nennt sich Obfuskation "obfuscate python" ist der Suchbegriff deiner Wahl.
Ob man das dann wieder kombinieren kann müsstest du testen.

Hart kodierte Credentials sind aber eine ziemlich miese Idee und solltest du dir gar nicht erst angewöhnen. Früher oder später willst du git nutzen, bist faul und nimmst github, vergisst das Repo auf privat zu stellen und schon hat jeder die Credentials. Security by Obskurity hat noch nie (mittel- bis langfristig) funktioniert.
Anwendungen und Nutzdaten (ja, auch Credentials) sollten im besten Fall immer voneinander getrennt sein! Gewöhne dir so einen Unfug gar nicht erst an.

Wenn du Anwendung und DB so von einander trennen willst dann machst du die die Userauthentifizierung im Backend bzw. der DB wo jeder Nutzer einen eindeutigen Account bekommt und du so auch die Zugriffsberechtigungen steuern kannst. Die Zugangsdaten soll/muss der Endanwender dann in die Anwendung eintragen beim erstmaligen Start. Solch eingegebenen Credentials kann man dann sicher ablegen. https://www.praetorian.com/blog/sec...hon-ruby-java-haskell-and-nodejs?edition=2019
Soll der Endanwender bereits bestehende Daten einsehen können dann machst eine Tabelle auf die alle authentifizierten User berechtigt sind und eine zweite Tabelle wo der Anwender eigene Daten ablegen kann.
 
mschrak schrieb:
Ich hatte im Zusammenhang mit der DB daran gedacht, dass ich dem Programm ja die erforderlichen Anmeldedaten für die DB übergebe, aber nicht möchte, dass jeder Nutzer in den Quellcode reinschaut und dann Zugriff auf die DB haben kann...
Wie der Vorrdner schon geschrieben hat wird das getrennt. Vom Prinzip her werden solche Dinge (unter anderem) aus Dateien ausgelesen die du nicht weiter gibst, so dass du den Code an sich veröffentlichen kannst.
 
mschrak schrieb:
Kann ich durch Kompilieren aus einem Python Programm grundsätzlich auch ein selbständig laufendes Programmfile erstellen, und das zudem nicht einfach so eingesehen werden kann?
http://www.pyinstaller.org/

Aber fang doch erst einmal an irgendwie was zum Laufen zu bekommen.
Als Anfänger hast du damit jetzt schon mehr als genug Beschäftigung.

Gedanken über die Verteilung deines Programms, Absicherung der Datenbank, etc. kannst dir auch später machen. So wird deine Liste nur noch unnötig größer und du kommst gar nicht dazu irgendwas umzusetzen.
 
Security im nachhinein zu implementieren ist immer(!) mehr Aufwand als es von Anfang an "richtig" zu machen. Ja, verzögert ggf. den Start des Projekts etwas aber in der Gesamtzeit ist es schneller. Wenn du schnelle Erfolge willst machs ohne aber frickel es nicht am Ende rein sondern schmeiß den Code dann weg und schreib es neu.
 
snaxilian schrieb:
Security im nachhinein zu implementieren ist immer(!) mehr Aufwand als es von Anfang an "richtig" zu machen.
Wenn man schon etwas Erfahrung hat, mag das stimmen. Ansonsten endet das häufig so wie beschrieben und man gibt auf, weil es irgendwann zu viel ist, wenn man sofort versucht alles perfekt zu machen, statt überhaupt erst einmal was zu machen, damit man das Programmieren lernt.
snaxilian schrieb:
Wenn du schnelle Erfolge willst machs ohne aber frickel es nicht am Ende rein sondern schmeiß den Code dann weg und schreib es neu.
Ist nicht zwingend notwendig - z.B. die Lösung von @BeBur kann man immer ohne Probleme nachrüsten.
 
  • Gefällt mir
Reaktionen: BeBur
Trotzdem sollten Credentials niemals im Klartext abgelegt werden, auch nicht in extra config files. Dafür gibt es in so ziemlich jeder Programmiersprache fertige Libraries wie z.B. bcrypt
 
Für erste Lernprojekte kann man das ruhig machen. Meiner Erfahrung nach ist es sehr frustrierend beim ersten Projekt direkt alle good practices umsetzen zu wollen.
 
  • Gefällt mir
Reaktionen: new Account()
Ich finde es auch unnötig gleich bei privaten Projekten anzufangen die Datenbankcredentials auszulagern. Letztendlich wird die Datenbank wohl nicht igendwo im Web laufen, sondern in einem privaten Netz, das sollte sie zumindest, da auch keine Erfahrung darin besteht einen Datenbankserver vernünftig abzusichern. Das wäre zu viel DevOps für Einsteiger-Softwareprojekte
 
Zurück
Oben