Каковы последствия для безопасности, не закрывая соединение с базой данных после того, как с ней покончено? - PullRequest
2 голосов
/ 29 января 2009

Какие проблемы безопасности могут возникнуть из-за того, что соединение с базой данных не закрывается после его использования? Разве PHP не закрывает его автоматически после загрузки новой страницы?

Ответы [ 4 ]

5 голосов
/ 29 января 2009

Как указано в документации mysql_close():

Использование mysql_close () обычно не необходимо, как непостоянное открытие ссылки автоматически закрываются на конец выполнения скрипта. Увидеть также освобождает ресурсы.

Поскольку соединения управляются PHP, угрозы безопасности не должно быть.

1 голос
/ 29 января 2009

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

Однако вы можете использовать постоянные подключения к базе данных , которые не закрыты, но повторно используются для следующего запроса. Если вы сделаете это, это может привести к некоторым последствиям для безопасности. Любое состояние соединения наследуется следующим PHP-запросом. Поэтому, если ваше приложение использует определяемые пользователем переменные базы данных, или временные таблицы, или даже LAST_INSERT_ID(), следующий запрос PHP может увидеть привилегированные данные, которые он не должен видеть.

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

0 голосов
/ 29 января 2009

Джефф Этвуд написал интересное сообщение в блоге на эту тему, которая может показаться вам интересной.

0 голосов
/ 29 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...