使用後不關閉數據庫連接可能會導致哪些安全問題?新頁面加載後,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