Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Как полностью обезопасить работу с Mysql?

#mysql #pdo #безопасность #взлом


В интернете я нашёл только один способ взлома Mysql базы данных - sql-инъекция. Однако
там же я нашёл и решение, как не допустить попадание нежелательных символов в mysql_query:

$query  = sprintf("SELECT * FROM sometable WHERE somevar='%s'",
mysql_real_escape_string($var));
mysql_query($query);


И тем не менее, многие люди настойчиво рекомендуют переходить на другие расширения
по работе с Mysql (PDO, например), считая оригинальное API априори небезопасным и недостаточно
функциональным. На последнее я не жалуюсь, но безопасность важна для меня. 

И вот вот вопрос: полностью ли меня обезопасил от хакерских атак код, приведённый
выше? Если нет, то возможно ли мне обезопаситься полностью, не переходя на другие расширения?
    


Ответы

Ответ 1



Если рассматривать ситуацию только в контексте "безопасность запросов от хакерских атак", то ответ: "Да, код, приведённый выше, полностью обезопасил от хакерских атак". Однако при разработке остальные моменты тоже нужно учитывать

Ответ 2



Для защиты от SQL инъекций перейдите на расширение PDO или mysqli и воспользуйтесь функцией bindParam. Функции mysql_* устарели и больше не поддерживаются. Пример использования для PDO prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'); $sth->bindParam(':calories', $calories, PDO::PARAM_INT); $sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12); $sth->execute(); Документация Пример для mysqli prepare($sql); $category_id = 1; $lastname = '%Smith%'; /* Bind параметры. Типы: s = string, i = integer, d = double, b = blob */ $stmt->bind_param('is', $category_id, $lastname); $stmt->execute(); Документация

Ответ 3



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

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

Отправить комментарий