完成后,不关闭与数据库的连接有什么安全隐患?

时间:2009-01-29 16:26:01

标签: php database security

使用后关闭数据库连接可能会导致哪些安全问题?一旦新页面加载,PHP是否会自动关闭它?

4 个答案:

答案 0 :(得分:5)

正如mysql_close()文档所说:

  

通常不使用mysql_close()   必要的,作为非持久的开放   链接自动关闭   脚本执行结束。看到   也释放资源。

由于连接由PHP管理,因此不存在安全风险。

答案 1 :(得分:1)

PHP 假设是“无共享”架构。也就是说,为每个请求分配所有资源,然后在请求完成后进行清理。因此,应该取消分配或关闭内存,文件句柄,套接字,数据库连接等资源。

但是,您可以使用未关闭的persistent database connections,但会重复用于下一个请求。如果你这样做,就会有一些安全隐患。任何连接状态都由下一个PHP请求继承。因此,如果您的应用程序使用数据库用户定义的变量或临时表,甚至是LAST_INSERT_ID(),那么下一个PHP请求可能会看到它不应该看到的特权数据。

如果关闭数据库连接以避免这种情况,则基本上会破坏持久连接的值。所以你不妨使用普通的数据库连接。

答案 2 :(得分:0)

我不能说网页是否关闭连接(这取决于管理它的是什么),但一般来说,最好在完成后关闭它,因为将其打开更长时间可能会导致对于想要连接到同一数据源的其他页面同时处理的饥饿问题。

答案 3 :(得分:0)

Jeff Atwood就这个你可能感兴趣的主题写了an interesting blog post