AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Passwort "hard codieren": Beste Lösung?

Passwort "hard codieren": Beste Lösung?

Ein Thema von rhuber · begonnen am 27. Mär 2019 · letzter Beitrag vom 28. Mär 2019
Antwort Antwort
Seite 1 von 2  1 2   
rhuber

Registriert seit: 11. Sep 2012
12 Beiträge
 
Delphi 7 Personal
 
#1

Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 12:14
Hallo zusammen
Muss in einem Tool (fat-client, der mit einem Server über die REST/http-Schnittstelle kommuniziert) Benutzername und Passwort "hart" codieren. Also direkt im Code, damit ich eine einfache http-Basic Authentication realisieren kann.

Gibt es hierzu eine best-practice? Einfachste Variante wäre natürlich, das Passwort direkt als Konstante in den Code zu schreiben. Etwas besser wohl, es erst durch eine Funktion während der Laufzeit zu erzeugen (bspw. MD5). Die Kommunikation ist mit SSL verschlüsselt, somit reicht die Basic-Auth. für meinen Bedarf aus.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.541 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 12:20
.. ich denke für das Problem gibt es keine beste Lösung, nur viele schlechte.
Ich halt nichts davon Userkennungen im Source festzulegen.

Wenn ein User mit dem System arbeiten will, kann er/sie auch die Kennungen eingeben.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
1.677 Beiträge
 
#3

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 12:21
Weitere Ideen:
das Passwort erst gar nicht in die EXE schreiben
das Passwort verschlüsselt in die EXE schreiben. Der Benutzer muss dann nur den Schlüssel zum entschlüsseln eingeben.

Ich würde es jedenfalls erst gar nicht in die EXE schreiben.
Oder vielleicht gehasht. Dann aber kein MD5 sondern SHA256 oder besser.

Aber ich bleibe dabei. Passwörter haben nichts in einer EXE zu suchen.
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
372 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 12:35
Hallo zusammen
Muss in einem Tool (fat-client, der mit einem Server über die REST/http-Schnittstelle kommuniziert) Benutzername und Passwort "hart" codieren. Also direkt im Code, damit ich eine einfache http-Basic Authentication realisieren kann.

Gibt es hierzu eine best-practice? Einfachste Variante wäre natürlich, das Passwort direkt als Konstante in den Code zu schreiben. Etwas besser wohl, es erst durch eine Funktion während der Laufzeit zu erzeugen (bspw. MD5). Die Kommunikation ist mit SSL verschlüsselt, somit reicht die Basic-Auth. für meinen Bedarf aus.
Ich hab sowas (accounts/password die der Benutzer normalerweise nicht kennt oder kennen soll) immer mit einer externen, verschlüsselten Datei gelöst, in der die Zugangsdaten stehen. Das Programm enthält dann zwar den Schlüssel für die Datei, aber das ist einfach eine Folge von 128 bytes (ursprünglich durch Verkettung von GUIDs erzeugt) und kein Text, also nicht so ohne weiteres zu finden, wenn man sich die Exe in einem hex-editor ansieht.
In meinem Fall lag die Datei im Firmennetzwerk an einer "bekannten" Stelle und konnte von diversen Anwendungen verwendet werden. Falls das in deinem Fall unpraktikabel wäre kannst Du die Datei auch als Resource in die Anwendung einbinden.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.549 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 12:38
So ist es.
Es kann kein "Muß" geben, eine Sicherheitslücke (großen Ausmaßes btw) zu implementieren. Darum muß halt Benutzer und Kennwort zur Laufzeit abgefragt werden.

Vernünftige Betriebssysteme erlauben übrigens auch folgendes Verfahren:
Credentials kann man in einer entsprechenden Datei ablegen, die nur der User, in dessen Kontext die Applikation läuft, auslesen kann. Das geht unter Windows nicht? Komisch.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
rhuber

Registriert seit: 11. Sep 2012
12 Beiträge
 
Delphi 7 Personal
 
#6

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 12:44
Danke euch für die Antworten! Ja, sauber ist es sicher nicht, das gilt aber meines Erachtens für die Basic-Authentication allgemein. Digest-Auth. wäre mir lieber, leider unterstützt dies Synapse aber nicht.

Es geht darum, mit möglichst minimalem Aufwand die aktuelle Lösung etwas sicherer zu machen. Bei dieser ist der Datenverkehr zwar SSL-verschlüsselt, der Hash zur Authentifizierung des Benutzers wird aber als Parameter in der URL übergeben. Die URL inkl. Hash könnte man somit einfach im Browser eingeben, was sicher nicht ideal ist. Mit einer Basic-Auth. und einem allgemein gültigen PW wäre dies schon mal etwas entschärft, ohne den Server gross umbauen zu müssen. Natürlich würde ich im Client dann das PW mittels einer Hash-Funktion erst während der Laufzeit erzeugen.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.440 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 13:19
Mann könnte doch auch den Benutzernamen und das Passwort zur laufzeit erzeugen.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.160 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 13:22
Mann könnte doch auch den Benutzernamen und das Passwort zur laufzeit erzeugen.
Und wie erzeugt man einen Benutzernamen + Passwort für einen (3rd Party) Webservice zur Laufzeit?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
286 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 14:57
Ich benutze einen stark modifizierten Ansatz nach dem Buch: Doberenz + Kowalski: Borland Delphi 7 – Kochbuch (2003) S. 894-895.

Erstelle dazu zwei Routinen:

Function String_Verschluesseln(S: Str255): AnsiString; // Hexadezimal-String-Array Function String_Entschluesseln(SS: AnsiString): Str255; Für die Ver- und Entschlüsselung benutze einen Zufallszahlen-Generator, dessen Zufallsfolge Du selber festlegen kannst (= eindeutig reproduzierbar) z.B. über

System.RandSeed:= MeinGeheimCode; MeinGeheimCode ist üblicherweise eine LongInt-Zahl z.B.

Delphi-Quellcode:
CONST
  MeinGeheimCode:= 123456789;
Damit erstellst Du einen langen Vektor

Delphi-Quellcode:
VAR
  SuperKey: Array[1..KeySize] of Byte;
KeySize kann z.B. 1000 oder länger sein.

Diesen füllst Du mit zufälligen Bytes z. B. bei
System.RandSeed:= 0; mittels obigen Zufallszahlen-Generator und verschlüsselst Du Dein Passwort aus den Zeichen des SuperKey-Arrays bei
System.RandSeed:= MeinGeheimCode; Im Programm musst Du nur die zwei an und für sich harmlosen Konstanten speichern:

1): Das verschlüsselte Passwort als Hexadezimale String-Constante ab z. B:

Delphi-Quellcode:
Const
 MeinGeheimPasswort ='168AEEAF481AE6E2911D8E1EB1F7A9CCBCE145A2E0AFC1';
2):
Delphi-Quellcode:
CONST
  MeinGeheimCode:= 123456789;
Vorsicht! Im Programm musst Du mindestens einmal einen Zugriff auf diese Konstanten machen, damit Delphi’s Optimierer sie nicht aus dem Code rauschlöscht.

Wichtig ist beim Zufallszahlen-Generator, daß Du den kompletten Quellcode dazu hast, weil Delphi’s Zufallszahlen-Generatoren sich manchmal von Version zu Version sich unterscheiden und daher nicht kompatibel (reproduzierbar) sind!
Gute Zufallszahlen-Generatoren, aber auch komplette Verschlüsselungsroutinen findest Du z.B. bei

https://sslsites.de/wolfgang-ehrhardt.de/index_de.html

Gruß, Andreas
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.313 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Passwort "hard codieren": Beste Lösung?

  Alt 27. Mär 2019, 15:39
Sind Server und Client in der gleichen Domäne?

Wenn ja, Windows-Authentifizierung des Rechner Kontos oder des Benutzerkontos, welche den Client ausführt.
Dann brauchst du gar keine Passwörter speichern.

Wenn nicht über einen OAuth-Server ein Token anfordern und der OAuth-Server macht die Windows-Authentifizierung.

Wenn das auch nicht geht, über Kerberos dürfte es sicherlich auch noch etwas geben.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf