gpt4 book ai didi

dart - flutter/Dart : Avoid storing password in plain text

转载 作者:IT老高 更新时间:2023-10-28 12:47:12 25 4
gpt4 key购买 nike

我在 Flutter 中使用 Dart 邮件程序,有一条评论说:

How you use and store passwords is up to you. Beware of storing passwords in plain.

有没有办法散列密码?如何避免以纯文本形式存储它?

最佳答案

在任何地方以纯文本形式存储密码通常不是一个好主意。但是,您处理密码的方式取决于平台。

flutter

flutter_secure_storage包使用 iOS 上的 Keychain 和 Android 上的 KeyStore 来存储密码(或 token )。

// Create storage
final storage = FlutterSecureStorage();

// Read secret
String value = await storage.read(key: key);

// Write secret
await storage.write(key: key, value: value);

请注意,对于 Android,最低 API 为 18。

Dart 服务器

如果您正在制作服务器,更重要的是不要以纯文本形式存储用户密码。如果服务器遭到入侵,攻击者将可以访问所有密码,并且许多用户在多个帐户上使用相同的密码。

最好使用 OAuth2 将身份验证移交给 Google 或 Facebook 或其他一些受信任的第三方。但是,如果您自己进行授权,则应使用盐对密码进行哈希处理并保存哈希,而不是密码本身。这使得攻击者更难获取用户密码,以防服务器遭到入侵。

一个基本的实现(见 comment below )可以使用 crypto由 Dart 团队打包。

// import 'package:crypto/crypto.dart';
// import 'dart:convert';

var password = 'password123';
var salt = 'UVocjgjgXg8P7zIsC93kKlRU8sPbTBhsAMFLnLUPDRYFIWAk';
var saltedPassword = salt + password;
var bytes = utf8.encode(saltedPassword);
var hash = sha256.convert(bytes);

保存盐和哈希。丢弃密码。为每个用户使用不同的盐。

要使暴力破解哈希更加困难,您还可以查看 dbcrypt包。

关于dart - flutter/Dart : Avoid storing password in plain text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com