Строки подключения 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);
в то время как эти параметры конфигурации могут быть отсоединены и сохранены в некотором файле конфигурации
Само по себе это хорошо, но имейте в виду, что небезопасная часть приложения может изменить это. Если у вас есть какие-либо методы доступа к файлам, вызываемые в приложении, и у вас нет адекватной очистки входных данных, то злоумышленник может иногда прочитать даже что-то выше корня.
Вы должны убедиться, что разрешения для этого файла соответствующим образом ограничены, особенно если вы находитесь на общем хосте.
Режим ошибки не нужен для того, что вы просите, но я все равно рекомендую.
Простое эхо в улове не рекомендуется. Попробуйте настроить систему регистрации ошибок / исключений, которую вы можете отслеживать как разработчик. Небезопасно и непрофессионально просто писать необработанные сообщения об ошибках на странице.
Пожалуйста, заверните весь код в классах. Глобальные переменные области видимости - это кошмар, а код глобальной области видимости сделает вашу жизнь сложнее.