Java bietet die URLEncoder
Klasse für URL-codierende Strings. Aber it is considered insecure to store passwords as Strings. Ist dieser Code zum Senden eines Passworts über POST über einen HttpsURLConnection
Ausgabestrom wr
sicher genug?Sicheres URL-Encoding eines Passworts
try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
// Write some post params
for (char c : pass) {
wr.writeBytes(URLEncoder.encode(String.valueOf(c), "UTF-8"));
}
// Write some more
}
Auf der einen Seite verwendet es Strings. Auf der anderen Seite sind diese Strings 1 Zeichen lang und konzeptionell gleich nach der Codierung. Es scheint mir auch, dass dies bei Multi-Byte-Zeichen fehlschlagen könnte. Wäre ein Angreifer in der Lage, diese 1-Zeichen-Strings im Speicher zu finden und das ursprüngliche Passwort zu rekonstruieren? Gibt es einen besseren Weg, dies zu tun?
Ich verstehe Ihren Standpunkt nicht: Sie sprechen nicht darüber, wie man ein Passwort im Speicher darstellt. * Du sprichst von * Senden * von Passwörtern. Das ist * nicht * das gleiche ?! – GhostCat
@GhostCat Ich spreche darüber, wie man ein Passwort überträgt, ohne es in einem unsicheren Format im Speicher zu speichern. –
@GhostCat Insbesondere frage ich mich, ob es sicher ist, die einzelnen Zeichen meines Passworts als Strings zu speichern. Könnte ein Angreifer diese Strings lokalisieren und das Passwort rekonstruieren? –