Как зашифровать пароль и имя пользователя в Dio flutter?

#flutter #authentication #dart #odoo

#флаттер #аутентификация #dart #odoo

Вопрос:

В моем приложении я использую библиотеку DIO flutter для входа в систему и для создания вопроса в моей базе данных. Это моя конфигурация

  static String BASE_URL = "http://localhost:8069/";
  static Dio dio = Dio()
    ..options.baseUrl = BASE_URL
    ..options.connectTimeout = 5000
    ..options.receiveTimeout = 100000;
 

Для входа в систему у меня есть:

 Map<String, dynamic> data = {
              "params": {
                'db': "name_db",
                'login': 'name_xxxxx',
                'password': 'password_xxxx'
              }
            };
            dio.interceptors.add(CookieManager(cookieJar));
            globals.dio = dio;
            Response response = await dio.post("/web/session/authenticate",
                data: json.encode(data),
                options:
                    Options(headers: {"Content-Type": "application/json"}));
 

Есть ли способ передать зашифрованные логин и пароль, чтобы не вводить имя пользователя и пароль открытым текстом в коде моего приложения?

Комментарии:

1. Я бы сделал это другим способом, написав открытым текстом зашифрованную версию вашего логина и пароля, которые вы бы расшифровали, чтобы они были в ваших данных.

Ответ №1:

Вы должны получить пароль в виде обычного текста и создать хэш пароля в бэкэнде и сохранить хэш в БД. и во время входа в систему возьмите обычный текст в качестве пароля, а затем создайте его хэш, а затем сравните его с хэшем пароля DB. для создания хэша вы должны использовать секретный ключ. найдите в Google, какой язык вы когда-либо использовали в бэкэнде.

в качестве альтернативы вы можете попробовать RSA. Это криптосистема с открытым ключом, которая широко используется для безопасной передачи данных. используется открытый ключ для кодирования и используется закрытый ключ для декодирования.

ПРИМЕЧАНИЕ: Это полностью связано с архитектурой, Dio не имеет к этому никакого отношения.

Комментарии:

1. Я понимаю. Проблема в том, что логин, который вы видите в коде, является общим для всех пользователей. Я вхожу в систему, чтобы затем иметь возможность запрашивать базу данных, фактически у разных пользователей, которые будут использовать приложение, не будет персонального входа. Я хотел, чтобы в моем коде не было четкого имени пользователя и пароля

2. Вы говорите о статическом имени пользователя и пароле, верно? Это небезопасно! но вы можете создать строку base64 и сохранить их в коде. перед отправкой запроса расшифруйте его.