使用后不关闭数据库连接可能会导致哪些安全问题?新页面加载后,PHP不会自动关闭它吗?在完成数据库连接之后没有关闭数据库连接的安全隐患是什么?
2
A
回答
5
由于mysql_close()
文件说:
使用mysql_close()通常没有必要 ,作为非持久性开放 链接在脚本执行的 结束自动关闭。见 也释放资源。
由于连接由PHP管理,所以不应该存在安全风险。
0
我不能说这个页面是否关闭了连接(这取决于管理它的任何东西),但总的来说,当你完成时关闭它是一个好主意,因为长时间打开它可能会导致同时处理的其他页面出现饥饿问题,这些页面要连接到相同的数据源。
1
PHP是假设是一个“无共享”体系结构。也就是说,所有资源都分配给每个请求,然后在请求完成后清理。所以像内存,文件句柄,套接字,数据库连接等资源应该被释放或关闭。
但是,您可以使用persistent database connections,它们未关闭,但会重新用于下一个请求。如果你这样做,就会有一些安全隐患。任何连接状态都由下一个PHP请求继承。因此,如果您的应用程序使用数据库用户定义的变量或临时表,或者甚至使用LAST_INSERT_ID()
,则下一个PHP请求可能会看到它不应该看到的特权数据。
如果关闭数据库连接以避免这种情况发生,那么基本上会破坏持久连接的值。所以你不妨使用普通的数据库连接。
0
Jeff Atwood写了an interesting blog post关于这个话题,你可能会觉得有趣。
相关问题
- 1. CodeIgniter数据库连接没有关闭
- 2. 关闭数据库连接
- 3. 为什么不关闭数据库连接在最后的块
- 4. 使数据库关闭后log4net重新连接到数据库
- 5. 没有数据库连接
- 6. 为什么总是关闭数据库连接?
- 7. Android:与数据库的安全连接
- 8. 用完数据库连接!
- 9. 关闭DataMapper数据库连接
- 10. asp.net; repeater.databind和数据库连接关闭
- 11. 关闭和打开数据库连接?
- 12. Play Framework:数据库连接池关闭
- 13. 什么是半连接数据库?
- 14. Java线程安全数据库连接
- 15. BreezeJS数据库连接安全
- 16. 数据库连接关闭后无法关闭迭代器
- 17. 关闭并重新连接SQLAlchemy会话的数据库连接?
- 18. PHP没有关闭与数据库的连接(odbc)
- 19. WCF数据库连接:只有一个数据库连接
- 20. 如何测试数据库连接是否成功关闭?
- 21. 在恢复SQL Server数据库之前等待连接关闭
- 22. 没有数据库连接的django unittest
- 23. 连接数据库
- 24. 数据库连接
- 25. 数据库连接
- 26. 连接数据库
- 27. 数据库连接
- 28. 数据库连接
- 29. 数据库连接
- 30. 数据库连接
特别是如果应用程序正在使用连接池。 – 2009-01-29 16:31:21