====== LU06k - Passwortsicherheit ====== Sicherheit ist ein entscheidender Aspekt in jeder Webanwendung. Ein wichtiges Element der Sicherheit ist die sichere Speicherung von Passwörtern. In dieser Lektion konzentrieren wir uns auf das Hashing von Passwörtern. ==== Warum Passwort-Hashing? ==== In einer sicheren Anwendung sollten Passwörter niemals im Klartext gespeichert werden. Anstelle dessen sollten sie gehasht werden, und der Hash-Wert sollte in der Datenbank gespeichert werden. Dies macht es für Angreifer schwierig, das ursprüngliche Passwort wiederherzustellen, selbst wenn sie Zugriff auf die Datenbank erhalten. ==== Verwendung von bcrypt ==== Python bietet verschiedene Bibliotheken für das Passwort-Hashing, eine der beliebtesten ist ''bcrypt''. Sie können bcrypt mit pip installieren: pip install bcrypt oder im ''requirements.txt'' ergänzen: ... bcrypt==4.0.1 ==== Hashing in der DAO-Klasse ==== Nach der Installation können Sie bcrypt in Ihrer DAO-Klasse verwenden, um das Passwort zu hashen: import bcrypt class UserDao: # ... def add_user(self, user): hashed_pw = bcrypt.hashpw(user.password.encode('utf-8'), bcrypt.gensalt()) self.cursor.execute("INSERT INTO users (username, email, password) VALUES (?, ?, ?)", (user.username, user.email, hashed_pw)) self.conn.commit() # ... ==== Authentifizierung ==== Bei der Authentifizierung wird das vom Benutzer eingegebene Passwort ebenfalls gehasht und mit dem in der Datenbank gespeicherten Hash verglichen: @app.route('/login', methods=['POST']) def login(): data = request.get_json() user = user_dao.get_user_by_username(data['username']) if user and bcrypt.checkpw(data['password'].encode('utf-8'), user.password): login_user(user) return jsonify({'success': True}), 200 return jsonify({'error': 'Invalid username or password'}), 401 Durch die Verwendung von Passwort-Hashing erhöhen Sie die Sicherheit Ihrer Anwendung erheblich. ---- {{tag>M323-LU06}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi