Как надежно сохранить детали соединения с базой данных

Попробуйте console.log(window['NoQ'+i]) НЕ лучшее решение, но оно ближе всего к тому, что вы пытаетесь сделать.

6
задан Bobby Jack 5 May 2009 в 09:23
поделиться

4 ответа

Точный метод зависит от среды, но в целом вы храните учетные данные в месте, доступном для чтения только пользователю, от имени которого работает ваше приложение. Например, в Windows вы должны хранить учетные данные в реестре в месте, защищенном ACL, чтобы его мог прочитать только этот пользователь. При желании вы можете использовать DPAPI для шифрования данных, чтобы они были дополнительно защищены. В Unix вы должны хранить его в файле, который был защищен с помощью chmod (и, возможно, зашифрован), чтобы только приложение могло его прочитать.

3
ответ дан 17 December 2019 в 00:14
поделиться

Это зависит от базы данных, которую вы используете. Для Microsoft SQL Server вы либо шифруете строку подключения к базе данных в конфигурации, либо используете встроенную защиту, где вы подключаетесь к базе данных, используя идентификатор приложения, из которого вы подключаетесь.

2
ответ дан 17 December 2019 в 00:14
поделиться

Мои рекомендации:

  1. отказаться от mysqli в пользу PDO (с драйвером mysql)
  2. использовать подготовленные с параметрами PDO параметры

Затем вы можете сделать что-то вроде:

$pdo_obj = new PDO( 'mysql:server=localhost; dbname=mydatabase', 
                    $dbusername, $dbpassword );

$sql = 'SELECT column FROM table WHERE condition=:condition';
$params = array( ':condition' => 1 );

$statement = $pdo_obj->prepare( $sql, 
    array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ) );
$statement->execute( $params );
$result = $statement->fetchAll( PDO::FETCH_ASSOC );

Плюсы:

  1. Больше никакого ручного экранирования, поскольку PDO делает все за вас!
  2. Это ' Это проблема, с которой мы столкнулись - и придумали множество подходов.

    Первый ответ заключается в предложении 1800 ИНФОРМАЦИЯ:

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

    Я не думаю, что вы получите лучшее универсальное решение, чем этот.

    Другие методы, с которыми мы экспериментировали (и отвергли):

    • Сохраните его в зашифрованном файле.
      • это работает только в том случае, если злоумышленник не может добраться до вашего кода, чтобы увидеть, как работает шифрование, поэтому в большинстве случаев это не так хорошо.
    • Сохраните его в базе данных и потребуйте, чтобы человек вошел в систему для запуска приложения.
      • это работает, если у вас есть возможность постоянно запускать приложение реальным человеком.
    • Положитесь на встроенные устройства безопасности, например, в .NET (см. Ответ rwwilden).
      • Это хорошее решение, если вы, например, в магазине Microsoft.
2
ответ дан 17 December 2019 в 00:14
поделиться

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

0
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: