Autor Beitrag
Terra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Do 08.11.12 15:53 
Hallo zusammen,

bin grade dabei eine Login-Routine für ein Programm zu erstellen, die mittels MySQL Datenbank im Internet funktionieren soll.

Mir ist aufgefallen, das wenn ich das Passwort in die MySQL Komponente mit eintrage, diese in der Compilierten EXE Datei voll sichtbar ist. Das ist aber nicht der Sinn der Sache.

Möglicher Weise gehe ich die ganze Sache auch falsch an. Welche Möglichkeit bietet sich als einfachste Grundlage an, das Passwort so zu verstecken, das nicht einmal in der Compilierten Version das Passwort mehr sichtbar ist?

Eine Verschlüsselungs Routine wäre eine Möglichkeit - finde das aber für einen einzelen String etwas umständlich, da allein nur diese eine MySQL Abfrage implementiert ist.

Gruß,
Terra
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 08.11.12 16:00 
Kurz: es gibt keine Möglichkeit!
Spätestens wenn Du Dich an die Datenbank anmeldest, musst Du ja vorher das Passwort entschlüsseln und ggf. über das Netzwerk übertragen. Das ließe sich leicht mit einem Sniffer mitlesen. Also verwende nicht zu viel Mühe auf ein unlösbares Problem. :wink:

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Terra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Do 08.11.12 16:12 
Vielleicht ist das Problem wirklich unlösbar, aber man könnte doch sicher irgendwie dem User es irgendwie sichtlich erschweren an das Passwort zu kommen, als nur mal schnell in den SourceCode der EXE Datei zu schauen.

Ich denke da jetzt auch nicht an eine SuperMega Verschlüsselung sondern einfach den String irgendwie verändern, das er im Source nicht unbedingt gleich einen Sinn macht.

Vielleicht so in etwa:
Passwort := %20%44%F1%C2;

Es müsste aber für Delphi dennoch einen Sinn machen.

Gruß,
Terra
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 08.11.12 16:15 
Du könntest das Passwort mit einer XOR-Verschlüsselung etwas unkenntlicher machen. Oder mit einem Caesar-Chiffre.
Aber Du musst Dir halt bewusst sein, dass Du damit keinerlei Sicherheit erreichst.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Terra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Do 08.11.12 16:32 
Naja, Sicherheit hat man nie wirklich. Wer in die Datenbank rein will, der kommt auch rein.

Habe es jetzt mal so gemacht:
Passwort := Chr(115)+Chr(111)+Chr(117)+Chr(97);

Scheint erstmal was zu bringen, da ich den String nicht als Text im Source endecken kann.
Danke dennoch für die Ansätze.

Denke mal, das sich damit die Frage beantwortet hat.

Gruß,
Terra
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Do 08.11.12 16:32 
user profile iconTerra hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht so in etwa:
Passwort := %20%44%F1%C2;

Es müsste aber für Delphi dennoch einen Sinn machen.
Den Sinn musst Du da schon reinbringen. Aber das Passwort in die Komponente auf dem Form zu schreiben das es in der EXE dann aus der DFM des Forms schön auszulesen ist, ist jedenfalls keine gute Idee. Ich lege solche Passwörter leicht verschlüsselt auf eine Konstante. Bei Bedarf werden sie entschlüsselt und zugewießen. Das ist aber nur vor denen ein Schutz die sich mit dem Durchsuchen der Exe nach Texten zufrieden geben. Und dann kannst du eigentlich auch schon ein Password verwenden was aus Buchstabensalat(+Zahlen und Sonderzeichen) besteht verwenden.
Wenn du den Spion etwas mehr ärgern willst kannst Du mehr als ein Passwort ablegen, eins passt die anderen nicht. Und probierst dann einfach alle durch wenn Du eine connection aufbaust. Allerdings machen das Spielchen die wenigsten Server sonderlich erfreut mit.
Aber wer ein bisschen Ausdauer hat findet auch dann raus was er wissen will.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 08.11.12 17:17 
Das kann man so machen, ja. Sei dir aber bewusst, dass selbst ein Hacker-Noob das Passwort in einer Minute rausbekommt. Ich hab ein ähnliches Problem auch mal gehabt, und den String dann auch mit was anderem ge-XOR-ed, um den im Code zu verstecken. Dann mal testweise OllyDbg (oder so ähnlich) angeschmissen, und schwupps konnte ich den String im Klartext darin lesen.

Edit: Und wenn das auch noch unverschlüssselt abläuft, dann reicht einfach Wireshark, also den Netzverkehr sniffen.

Wenn das Passwort also in irgendeinerweise geschützt bleiben soll, würde ich da nach einem anderen System suchen. ;-)

_________________
We are, we were and will not be.
Terra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Do 08.11.12 21:10 
Mir würde da noch etwas von früher einfallen, was mehr ein indirekter Weg wäre. Ich habe das so zwar noch nie versucht aber die Idee schwebt mir schon seit einiger Zeit im Kopf rum.

"Einfach" mittels einer API. (Thema: SOAP)
Im Grunde würde dann alles PHP übernehmen und ich mittels einer Schnittstelle in PHP das Login abfragen.
Die Frage hierbei ist aber - wie sicher ist das ganze, wenn ich eine Schnittstelle zu den Login-Daten freigebe?

Aber die ganze Geschichte wäre mir z.Z. noch eine Nummer zu hoch.
Es würde nur ein "true" oder "false" vom Server kommen und man muss kein Passwort im Programm haben.
Also Login-Daten Verschlüsselt an die SOAP Schnittstelle senden und Ergebnis abfragen und verarbeiten.

Was würdet ihr dazu sagen?
Frage ist aber auch, ob das nicht zu viel Performance kostet.

_________________
Gruß,
Terra