Строки подключения MySQL PDO

Я только изучаю PDO и мне нужно знать, действительно ли это соединение (оно работает) действительно безопасно. Я помещаю свои соединения в недоступную папку вне корня.

Это хорошо сформировано или я могу улучшить это?

Нужно ли мне $conn->setAttribute... ИСКЛЮЧЕНИЕ?

$user = 'JoeUser';
$pass = 'JoesPassword';

try {
  $conn = new PDO("mysql:host=myWebHost.com;dbname=MydataBase", $user, $pass);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
  echo 'ERROR: ' . $e->getMessage();
}

2 ответа

Решение

если это соединение (оно работает) действительно безопасно.

КОНЕЧНО, НЕТ

Вы открываете внутреннюю базу данных в случае ошибки. Один называют это что-нибудь, но не "безопасный".

Нужно ли мне $conn->setAttribute... ИСКЛЮЧЕНИЕ?

Да.

я могу улучшить это?

По какой-то странной причине вы устанавливаете только имя пользователя и пароль для переменных. Как насчет базы данных? Другие настраиваемые вещи?
и, конечно, вы должны избавиться от этого try .. echo материал

$user    = 'JoeUser';
$pass    = 'JoesPassword';
$host    = 'myWebHost.com';
$db      = 'MydataBase';
$charset = 'utf8';

$conn = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

в то время как эти параметры конфигурации могут быть отсоединены и сохранены в некотором файле конфигурации

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

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

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

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

Пожалуйста, заверните весь код в классах. Глобальные переменные области видимости - это кошмар, а код глобальной области видимости сделает вашу жизнь сложнее.

Другие вопросы по тегам