27

Почему не стоит использовать функции mysql_* в PHP?

18

Проблема с использованием функций mysql_* в PHP

Я столкнулся с некоторыми проблемами при использовании функций mysql_* в PHP, таких как mysql_query(), mysql_connect() и mysql_real_escape_string(). Хотел бы понять технические причины, по которым не стоит использовать эти функции.

  1. Почему рекомендуется использовать альтернативы, если функции mysql_* работают на моём сайте? Я хочу понять, какие недостатки есть у этих функций, которые могут повлиять на безопасность и производительность.

  2. Если у меня возникают ошибки, такие как:

    Warning: mysql_connect(): No such file or directory
    

    Каковы возможные причины этих ошибок? Что они означают и как их можно исправить?

Буду признателен за подробные объяснения и рекомендации по использованию более современных и безопасных альтернатив для работы с базами данных в PHP.

3 ответ(ов)

1

Функции mysql_:

  1. устарели — они больше не поддерживаются;
  2. не позволяют легко перейти на другой движок базы данных;
  3. не поддерживают подготовленные выражения, что, в свою очередь;
  4. побуждают программистов использовать конкатенацию для создания запросов, что может привести к уязвимостям, связанным с SQL-инъекциями.
1

Существует множество причин, но, возможно, самая важная заключается в том, что функции mysql_* способствуют небезопасным практикам программирования, поскольку не поддерживают подготовленные выражения. Подготовленные выражения помогают предотвратить атаки SQL-инъекцией.

При использовании функций mysql_* вам необходимо помнить о том, чтобы пропускать параметры, предоставленные пользователем, через mysql_real_escape_string(). Если вы забудете сделать это хотя бы в одном месте или случайно экранируете только часть ввода, ваша база данных может оказаться под угрозой.

Использование подготовленных выражений в PDO или mysqli значительно усложнит возможность допустить подобные ошибки программирования.

0

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь