Ist sicher ein Unterschied ob Englisch oder Deutsch. Wäre ich nicht deutsch würde ich es auch nicht lernen wollen, zumal ja Englisch die Weltsprache ist und nicht Deutsch.
Posts by Andy
-
-
Ich wohne seit 2019 nicht mehr in Rheinland-Pfalz, ich komme übrigens ursprünglich aus Pirmasens. Ja genau, das Örtchen da südwestlich von dir! 38km die B270 entlang und du bist da!
Bin da aber noch so mindestens 3-4x im Jahr, Familie besuchen und äh.... Auto machen lassen .Du also?
Ja Pirmasens kennt man natürlich bei mir in der Ausbildung war einer von der Neumühle, die ist ja auch da ums eck.
-
Ich komme aus der Ecke...
dann sind wir ja schon zu 3 aus der Ecke
-
Passwort vergessen Funktion.
Wobei ich mit garantierter Sicherheit sagen kann, das das weder heute noch in Zukunft Leute anständig verwenden werden und können.
Zur "Antwort" von ChatGPT: Im geklauten Text wird nur auf die Möglichkeit eingegangen wenn sich jemand Zugriff auf den Account des Opfers verschafft, nicht jedoch auf die Möglichkeit die Mail auf dem Weg zum Opfer abzufangen.
Um es vielleicht mal verständlicher zu machen:
Du schickst eine Postkarte mit streng geheimen Informationen an jemanden. Auf dem Weg dorthin wird die Postkarte von unterschiedlichen Menschen und Systemen immer wieder bearbeitet, wer verhindert das nicht jemand davon liest was auf der Rückseite steht? Selbst wenn du sie in einen Umschlag packst (Transportverschlüsselung) verhindert dies nicht wenn dem Täter bekannt ist welchen Weg die Postkarte im System nimmt diese darin abzufangen, zu öffnen und den Inhalt zu lesen.
Dann mache ich es einfach so, dass die Tokens AES verschlüsselt an die mail gesendet werden mithilfe eines Passwortes was der Benutzer eingeben kann und beim bestätigen muss er es wieder eingeben um die Strings zu entschlüsseln. Problem gelöst und schon ist es sicherer als ein normaler login. Selbst wenn jemand die mail ließt, kann er mit dem string nichts anfangen ohne das kennwort vom user.
-
Ich würde gerne ein standard erreichen, genau so funktioniert das prinzip ja. So bekommt der anbieter eben nur den hash und man ist sicher das er nicht die plain mail bekommt. Außerdem wenn man das so macht, wie soll der nutzer wenn er das Passwort verliert sich wieder einloggen.
-
In Kaiserslautern, bin nur dort aufgewachsen. Aber nicht das Neunkirchen im Saarland sondern am Potzberg.
-
Ja, bin da in der nähe aufgewachsen. Neunkirchen, wenn dir das was sagt
-
Maximilian Rupp Hab eben das impressum gesehen, kennst du Pfeffelbach ? Wir waren da fürher immer wenn da Musik war komme auch aus der Region.
-
Du kannst Module erstellen, die sogenannte Packages sind. In diesen kannst du Actions, eigene Funktionen und vieles mehr hinzufügen. Ein Beispiel dafür ist das Login-System mit der Blockchain, das ebenfalls als Modul umgesetzt ist. Das gesamte Konzept basiert auf diesen Modulen. Das Framework selbst ist sehr schlank und enthält nur die grundlegenden Funktionen.
Mein Ziel ist es, dass sich eine Community um das Framework bildet, die Module entwickelt und diese der Allgemeinheit zur Verfügung stellt. Natürlich werde ich selbst auch einige Module erstellen.
Du kannst einfach ein Modul erstellen wenn du von der Module Klasse erbst.
PHP
Display Moreclass UserModule extends Module { private ?Quanta $quanta; private function start_sessions() { if (session_status() === PHP_SESSION_NONE) { session_start(); } } private function initial_database($quanta) { $table_name = "user"; $result = $quanta->databaseHandler->query("SHOW TABLES LIKE '" . $table_name . "'"); if (!$result) { $sql = "CREATE TABLE $table_name ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(64) NOT NULL UNIQUE, password TEXT NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, type VARCHAR(64) NOT NULL, last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"; $quanta->databaseHandler->query($sql); } } public function exist_username($username) { $sql = "SELECT * FROM user WHERE username = ?"; $params = array($username); $result = $this->quanta->databaseHandler->query($sql, $params); if ($result) { return true; } return false; } public function exist_email($email) { $sql = "SELECT * FROM user WHERE username = ?"; $params = array($email); $result = $this->quanta->databaseHandler->query($sql, $params); if ($result) { return true; } return false; } public function exist_user($username, $mail) { if ($this->exist_username($username) || $this->exist_email($mail)) { return true; } return false; } public function create_user($username, $password, $email, $type = 1) { if ($this->exist_user($username, $email)) { return false; } $password = password_hash($password, PASSWORD_DEFAULT); $sql = "INSERT IGNORE INTO user (username, password, email, type) VALUES (?, ?, ?, ?)"; $params = array($username, $password, $email, $type); $this->quanta->databaseHandler->query($sql, $params); return true; } public function login_user($username, $password) { $user = $this->fetch_user_with_mail($username); if ($user) { if(password_verify($password, $user["password"])) { $_SESSION["user"] = $user; return true; } } return false; } public function is_user_loggedin() { if(isset($_SESSION["user"])) { return true; } return false; } public function logout_user() { unset($_SESSION["user"]); return true; } public function get_current_user() { if($this->is_user_loggedin()) { return $_SESSION["user"]; } return false; } public function fetch_users() { $sql = "SELECT * FROM user"; $result = $this->quanta->databaseHandler->query($sql); return $result; } public function fetch_user_with_mail($mail) { $sql = "SELECT * FROM user WHERE email = ?"; $params = array($mail); return $this->quanta->databaseHandler->query($sql, $params); } public function dispose($quanta) { $this->quanta = null; } public function load($quanta) { $this->quanta = $quanta; $this->start_sessions(); $this->initial_database($quanta); $loginForm = new LoginForm("login_form"); $this->quanta->componentHandler->addComponent($loginForm); $registerForm = new RegisterForm("register_form"); $this->quanta->componentHandler->addComponent($registerForm); $createUserAction = new CreateUserAction("create_user", $this->id); $this->quanta->actionHandler->addAction($createUserAction); } }
Wichtig ist die load($quanta) und die dispose($quanta) funktion.
-
hab das ganze mit dem mail abfangen mal durch chatgpt gejagt und seine meinung dazu eingeholt. Folgendes ist seine antwort. Wobei einige punkte wie einmal aktivierung schon längst umgestzt ist.
QuoteDu hast absolut recht: Das Abfangen einer E-Mail ist grundsätzlich ein potenzielles Risiko, egal ob es sich um dein neues System oder ein herkömmliches Passwort-Reset-System handelt. Der kritische Punkt liegt darin, wie man solche Risiken minimieren und sicherstellen kann, dass das Verfahren nicht anfälliger ist als existierende Alternativen. Hier sind ein paar Gedanken dazu:
Vergleich mit herkömmlichen Systemen:
- Passwort-Reset-Systeme:
Wenn jemand Zugriff auf die E-Mail einer Person erhält (z. B. durch Phishing oder ein E-Mail-Sicherheitsproblem), kann er fast jedes Konto übernehmen, indem er die "Passwort zurücksetzen"-Funktion nutzt. Das Risiko ist hier sehr ähnlich. - Dein System:
In deinem Fall könnte ein Angreifer ebenfalls die Bestätigungs-E-Mail abfangen, um ein Zertifikat zu erstellen. Der Hauptunterschied ist, dass bei deinem System keine weiteren persönlichen Daten (wie Passwörter) gespeichert werden, was das potenzielle Schadensrisiko begrenzt.
Warum das kein größeres Risiko ist:
- Keine Speicherung sensibler Daten:
Dein System speichert keine Passwörter, also gibt es keine Möglichkeit, ein gestohlenes Passwort für andere Dienste wiederzuverwenden (im Gegensatz zu vielen Nutzern, die häufig dasselbe Passwort auf mehreren Seiten verwenden). - Zeitbegrenzung der Zertifikate:
Mit der Einführung des timespan-Feldes kannst du die Lebensdauer eines Zertifikats stark einschränken. Selbst wenn jemand die E-Mail abfängt, hat er nur ein sehr begrenztes Zeitfenster, um sie zu missbrauchen. - Blockchain-Schutz:
Da der Zertifikatsprozess über die Blockchain läuft, ist es nahezu unmöglich, nachträglich Manipulationen vorzunehmen oder Zertifikate zu fälschen.
Maßnahmen, um das Risiko weiter zu minimieren:
- Zusätzliche Verifizierung:
Um das Abfangen der E-Mail weniger relevant zu machen, könntest du eine zusätzliche Sicherheitsstufe hinzufügen:- CAPTCHA bei der Erstellung: Um Bots zu blockieren.
- 2-Faktor-Authentifizierung (optional): Nutzer könnten zusätzlich einen Verifizierungscode über eine andere Methode (z. B. SMS oder Authenticator-App) eingeben.
- SSL-Verschlüsselung:
Stelle sicher, dass alle E-Mails und Verbindungen verschlüsselt übertragen werden (über HTTPS und TLS für E-Mails). Dies reduziert die Wahrscheinlichkeit eines Man-in-the-Middle-Angriffs. - Warnungen bei mehrfacher Erstellung:
Informiere den Nutzer, wenn ein neues Zertifikat für seine E-Mail generiert wurde. Dadurch können sie schneller handeln, falls etwas verdächtig ist. - Einmalige URLs in E-Mails:
Die Verifizierungs-URL in der E-Mail könnte so gestaltet sein, dass sie nach einmaligem Klick ungültig wird. Das erschwert es Angreifern, eine abgefangene URL zu verwenden. - Empfehlung von Wegwerf-Mails in der Alpha-Phase:
Wie du es bereits in deiner Alpha-Warnung erwähnt hast, kannst du den Nutzern in dieser Phase weiterhin empfehlen, Wegwerf-E-Mail-Adressen zu verwenden. Das reduziert die Risiken, während das Konzept getestet wird.
Fazit:
Das Risiko durch abgefangene E-Mails in deinem System ist vergleichbar mit bestehenden Passwort-Reset-Systemen, wenn nicht sogar geringer. Es wäre jedoch wichtig, klar zu kommunizieren, dass der Schutz der eigenen E-Mail-Adresse und die Nutzung sicherer E-Mail-Provider entscheidend für die Sicherheit sind.
Durch zusätzliche Maßnahmen, wie die Zeitbegrenzung der Zertifikate oder einmalige Verifizierungs-URLs, kannst du das System weiter absichern und den Nutzern zeigen, dass die Sicherheit ein zentrales Element ist. ?
- Passwort-Reset-Systeme:
-
So ich habe jetzt mal eine timespan für die Gültigkeit mit in den Daten Block aufgenommen. Das bedeutet das man sich ein Token erstellen kann, dass nur eine bestimmte zeit gültig ist. Das macht das ganze wesentlich sicherer.
-
Habe mich mal daran gemacht und eine kleine learn more seite erstellt. Am WE werde ich eine komplette doku beginnen Quanta - Build Smarter
-
Wenn halt ein jeder der eine verwendete Mail-Adresse errät sich ein neues Zertifikat ausstellen kann, ohne das dies irgendwie richtig validiert wird, sehe ich Account Diebstähle ohne wirkliche Hindernisse.
Nochmal du brauchst zugriff zu dem Mail Account, die Aktivierung zeitlich zu begrenzen ist ja möglich. In diesem fall unterscheidet sich der neue Login nicht von dem aktuell verwendeten Login. Wenn du jemand zugriff zu deinem mail account gibst und den ohne 2FA nutzt, dann ist das offentlich ein problem des nutzers.
Auch AES als Verschlüsselung ist nicht wirklich etwas wirksames, nicht ohne Grund werden heutzutage BCrypt und Argon verwendet.
Da solltest du dich nochmal informieren. AES ist der sicherte Verschlüsselung Algorithmus den es derzeit gibt. Ich bin wie gesagt kein Cyber Security experte aber ich denke nicht das es jemand möglich war bis dato eine AES Verschlüsselung zu "knacken". Hier ein paar quellen
256 Bit Encryption – Is AES 256 Bit Encryption Safe in Modern Times?256 bit encryption is the safest and strongest in modern times as per technology standards. But is AES 256-bit encryption truly safe? Let's find out.www.clickssl.net -
Genau sehe ich auch so. Darum habe ich ja das thema aufgemacht.
-
Das ist wohl richtig, aber wie will man das anderst nachvollziehen. Ich meine wenn man sich irgendwo mit der mail und dem pw anmeldet passiert ja das gleiche. Da reicht auch aus, dass man zugang zum mail account hat.
-
Naja du musst auch das Passwort der mail kennen logischer weise. Du musst ja deine Mail bestätigen. Ohne das geht es nicht.
-
Die frage der Sicherheit ist ja genau das warum ich diese Diskussion starte. An sich ist es schon sehr sicher, solange niemand an das Zertifikat kommt. Man könnte das ganze wie bereits erwähnt nur eine gewisse anzahl von minuten / stunden / tagen gültig machen und dannach verliert es seine gültigkeit.
-
Du kannst das natürlich kopieren, du bist ja selbst verantwortlich das zertifikat so aufzubewahren das es niemand kopieren kann. Als angreifer musst du die mail ja bestätigen, was du nicht kannst ohne zugriff auf den mail account zu haben aebian
-
Du erstellst ein neues Zertifikat. Der Hash von etwas ist immer das selbe. Das ändert sich ja nicht.
-
Es geht zunächst nicht um das Passwort, sondern darum, dass deine E-Mail-Adresse nicht im Klartext in der Datenbank der Website gespeichert wird. Der Betreiber der Website muss stattdessen den Hash deiner E-Mail-Adresse verwenden, um dich zu verifizieren.
Der Vorteil dieses Ansatzes ist, dass niemand die E-Mail-Adresse in ihrer vollständigen Form verwenden kann. Selbst im Falle eines Datenlecks ist die tatsächliche E-Mail-Adresse nicht gefährdet, da nur der Hash in der Datenbank gespeichert wird. So bleibt deine E-Mail-Adresse geschützt und der Betreiber kann sicherstellen, dass keine persönlichen Daten im Falle eines Lecks in falsche Hände geraten.