Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Username Paßwort nicht im Klartext im Programm Prinzipfrage (https://www.delphipraxis.net/126736-username-passwort-nicht-im-klartext-im-programm-prinzipfrage.html)

haentschman 1. Jan 2009 12:47


Username Paßwort nicht im Klartext im Programm Prinzipfrage
 
Guten Morgen an alle...

- prinzipiell geht es darum, eine Mail mit Anhang per Indy zu verschicken. Wie das funktioniert ist klar.
- zum Versenden benötigt man ja die Authentifikationsdaten.
- diese Daten sollten ja nicht im Klartext im Programm hinterlegt sein.
- welcher Weg ist für Euch am sinnvollsten ?

Ich hatte folgende Idee:
- die Benutzerdaten in einem Textfile verschlüsselt auf dem Server im Internet.
- vor Versenden:
- Stringlist erzeugen
- IdSMTP erzeugen
- Textfile holen
- Textfile entschlüsseln
- entschlüsselte Werte in Stringlist
- Mail mit den Werten aus Stringlist verschicken
- Stringlist freigeben
- IDSMTP freigeben

Somit wären die Daten nur kurzfristig im Klartext im Memory (ausreichende Sicherheit)
Sollten sich die Benutzerdaten ändern, kann man das über das Textfile bequem pflegen.

Was denkt Ihr ? Danke für Tipps.


PS:
irgendwo hier im Forum gab es schon mal eine Diskussion darüber. Ich finde es nicht... :oops:
...bitte her mit den Links...Danke.

sakura 1. Jan 2009 12:51

Re: Username Paßwort nicht im Klartext im Programm Prinzipfr
 
Wenn es Dir eher um die generelle Hinterlegung solcher Daten geht ... den goldenen Mittelweg kann ich Dir auch nicht sagen, aber Deine Lösung finde ich auch nicht viel besser, als die Daten gleich verschlüsselt mit dem Programm zu speichern.

Ansonsten zu Deinem speziellen Problem. Wenn der Empfänger immer der gleiche ist, dann nutze doch einen Web-Service (o.ä.), welcher die Daten entgegennimmt und dann direkt die Email auf dem Server hinterlegt.

Andere Möglichkeit, wenn es nur um das Versenden der Emails geht. Sende die Email doch direkt an den Empfänger, dann benötigst Du keinen Proxy-SMTP Server und somit auch keine Nutzerdaten. SMTP ermöglicht immer das unauthentifizierte Senden einer Email an den Empfänger, wenn dieser auch vom SMTP-Server verwaltet wird (sonst gäbe es ja auch keinen Spam ;-))

...:cat:...

Mr_G 1. Jan 2009 12:52

Re: Username Paßwort nicht im Klartext im Programm Prinzipfr
 
Hmm... ich würde es noch anders machen:
Wenn du die entsprechenden Mittel hast (Server im Internet) könntest du einfach ein Programm/PHP-Script auf den Server packen und dazu eine Verbindung aufbauen (evtl. verschlüsselt oder gefiltert). So wären zumindest die Daten für die Mail sicher auf dem Server.

Edit: Argh... roten Kasten weggeklickt... ich schließe mich sakura also an...

Matze 1. Jan 2009 12:54

Re: Username Paßwort nicht im Klartext im Programm Prinzipfr
 
Hallo haentschman,

es geht auch sicherer ohne nötige Authentifizierungsdaten, wenn du die Mails nicht direkt über die Indys versendest, sondern über PHP. Ein Absender lässt sich dort beliebig angeben, somit merkt man nicht, dass die Mail nicht von deinem Account kommt.
Es ist auch Möglich, mit PHP Mails über POP3- oder SMTP-Accounts zu versenden und die Account-Daten bleiben somit in den PHP-Dateien und sind für keinen Zugänglich.

Diesen Weg würde ich einschlagen, damit die Daten wirklich nicht ausgelesen werden können.

Grüße, Matze

Edit: Na da waren gleich 2 schneller.

Phoenix 1. Jan 2009 12:59

Re: Username Paßwort nicht im Klartext im Programm Prinzipfr
 
Zitat:

Zitat von haentschman
Guten Morgen an alle...

- prinzipiell geht es darum, eine Mail mit Anhang per Indy zu verschicken. Wie das funktioniert ist klar.
- zum Versenden benötigt man ja die Authentifikationsdaten.

Nicht zwingend.

Nur, wenn Du die Mail per SMTP über einen bestimmten Mailaccount absenden willst, musst Du Dich dort anmelden.

Normalerweise kannst Du aber, wenn die Zieladresse bekannt ist (das wird sie ja sein), die Mail aber auch per SMTP direkt beim Ziel-Mailserver abliefern. In der Regel nimmt ein Ziel-Mailserver eine Mail die für ihn selber bestimmt ist und an ein gültiges Mailaccount abgeliefert wird ohne Anmeldung an.
Nur wenn der Mailserver die eMail an einen anderen Mailserver weiterleiten muss (SMTP-Relay) sollte er eine Anmeldung verlangen. Hintergrund: Ich schicke eine Mail von meinem Account an Dich weg.

Ich schicke diese Mail an meinen Mailserver. Der merkt: Die Mail ist nicht für meinen Mailserver sondern für einen anderen. Er fragt mich nach Anmeldungsdaten. Die werden geliefert, er sucht den Zielmailserver (Deinen) und schickt Dir Mail dorthin. Wenn Dein Mailserver jetzt auch bei Mails die für ihn selber sind Anmeldedaten fragen würde - woher sollte mein Mailserver die denn kennen? Die Mail ist direkt für ihn, und deswegen nimmt er sie ohne zu fragen an.

haentschman 1. Jan 2009 13:00

Re: Username Paßwort nicht im Klartext im Programm Prinzipfr
 
Danke für die schnelle Reaktion... :thumb:

der gesendete Anhang ist die FehlerLog Datei wenn der User sie senden möchte. Also nix wildes. Deswegen sollte der Aufwand gering sein.
Zitat:

SMTP ermöglicht immer das unauthentifizierte Senden einer Email an den Empfänger
...bei meiner ganzen Leserei war immer von Authentifizierung die Rede. Ich klemme mich noch mal dahinter. 8)
Zitat:

die Daten gleich verschlüsselt mit dem Programm zu speichern.
...ist schon richtig. Ich fand, daß bei Änderungen der Mailadresse, Zugangsdaten diese über ein externes File leichter pflegbar wären, damit ich nicht jedesmal ein Update zur Verfügung stellen müßte.

...ich suche dann mal weiter.

PS: PHP sind für mich noch böhmische Dörfer...hatte noch keine Zeit mich damit zu beschäftigen :oops:

-Ralf- 1. Jan 2009 16:39

Re: Username Paßwort nicht im Klartext im Programm Prinzipfr
 
Hy,
es gibt natürlich super gute und sichere Verfahren. Für einfache Dinge kannst du aber das hier verwenden...

Hier ein kleiner Schnipsel, wie du mi Hilfe einer INI-Datei die Daten auf dem Server hinerlegen kann. Der Nutzer / sein Programm holt sich zunächst diese Datei und entnimmt ihr dann den eigentlichen Zugang. Danach kann man die Datei auf dem Anwender-PC auch gleich wieder löschen.
Ich verwende das seit einiger Zeit.


// hiermit kannst du eine INI-Datei herunterladen, die den verschlüsselten Zugang enthält:
var i : integer;
s : string[255];
c : array[0..255] of byte absolute s;
begin
// Zuerst "update.ini" abholen...
if not GetURLFile('http://www.TestInternetSeite/update.ini','c:\TestProgramm\Update.ini') then
begin
StatusBar_Updates.SimpleText := '>> kein Internet vorhanden';
screen.Cursor := crDefault;
exit;
end;
UpdateIni := TIniFile.Create('c:\TestProgramm\Update.ini');
// INI-Datei auslesen:
s := UpdateIni.readstring('FTPZugang','User','');
For i := 1 To ord(s[0]) do c[i] := 5 Xor c[i];
IdFTP1.Username := s;
StatusBar_Updates.SimpleText := 'User eintragen...';
s := UpdateIni.readstring('FTPZugang','Pass','');
For i := 1 To ord(s[0]) do c[i] := 5 Xor c[i];
IdFTP1.Password := s;
StatusBar_Updates.SimpleText := 'Passwort eintragen...';
s := UpdateIni.readstring('FTPZugang','Home','');
For i := 1 To ord(s[0]) do c[i] := 5 Xor c[i];
IdFTP1.Host := s;
StatusBar_Updates.SimpleText := 'Host eintragen...';
// Verbindung zum Server aufbauen
Try
IdFTP1.Disconnect;
IdFTP1.Connect;
except
IdFTP1.Disconnect;
StatusBar_Updates.SimpleText := 'Vorgang abgebrochen!';
showmessage('Der Vorgang musste abgebrochen werden! Verfügen Sie über eine funktionierende Internetverbindung? Oder unterbindet Ihre Firewall dem Programm auf das Internet zuzugreifen? Versuchen Sie es evtl. nochmals...');
screen.Cursor := crDefault;
exit;
end;


// So kannst du die INI-Datei erstellen - ich verwende dazu ein Memo-Feld...

// INI-Datei erstellen und speichern
Memo_AufbauBearbeiten.Clear;
Memo_AufbauBearbeiten.lines.add('[FTPZugang]');
s := 'TestInternetSeite.de';
For i := 1 To ord(s[0]) do c[i] := 5 Xor c[i];
Memo_AufbauBearbeiten.lines.add('Home=' + s);
s := 'p36288807';
For i := 1 To ord(s[0]) do c[i] := 5 Xor c[i];
Memo_AufbauBearbeiten.lines.add('User=' + s);
s := 'deborars';
For i := 1 To ord(s[0]) do c[i] := 5 Xor c[i];
Memo_AufbauBearbeiten.lines.add('Pass=' + s);
Memo_AufbauBearbeiten.lines.SaveToFile('c:\Testpro gramm\Update.ini');
//INI-Datei jetzt hochladen...

haentschman 1. Jan 2009 18:33

Re: Username Paßwort nicht im Klartext im Programm Prinzipfr
 
...Update.

@-Ralf-
Danke für Deine Info. Das ist im Prinzip, das was ich meinte mit die Userdaten nicht im Programm zu speichern sondern bei Bedarf anzufordern. Benutzen und wegschmeißen... :wink:

Ich habe nun ein wenig mit SMTP herumprobiert. Es sieht wahrscheinlich so aus, daß mein smtp.1und1.de grundsätzlich eine Authentifizierung verlangt. War eigentlich fast zu erwarten.

Zitat:

Normalerweise kannst Du aber, wenn die Zieladresse bekannt ist (das wird sie ja sein), die Mail aber auch per SMTP direkt beim Ziel-Mailserver abliefern.
...darunter verstehe ich:
- ohne Authentifikation
- z.B. SenderDomain = EmpfängerDomain
:?: wie müßten dann die Einstellungen Host, Ziel E-Mail, from E-Mail aussehen ?

könnte ich das bitte mit dem "direkt abliefern" noch einmal ein wenig ausfühlicher erklärt bekommen ?

Danke
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz