PHP ADOdb 是做 PHP 與資料庫間的抽象層,讓對各種資料庫的操作都可以同樣的語法處理~
- 註:各種資料庫如 MySQL、PostgreSQL、SQLite、Oracle、Microsoft SQL Server .. 等
PHP ADOdb 的 SQL Injection (CVE-2025-46337) 漏洞
現在 PHP 的 PDO 就已經等同此效果,ADOdb 已經越來越少聽到了,從 ADOdb Change Log 可以看出來,2025/01 之前的最後更新,是 2023/11 的版本~
近期的更新,主要就是這個安全性因素:
- CVE-2025-46337
- SQL injection in ADOdb PostgreSQL driver pg_insert_id() method · Advisory · ADOdb/ADOdb · GitHub
這個煮要會發生的場景是在 ADOdb + PostgreSQL + pg_insert_id() 詳見:Fix SQL injection in pg_insert_id() · ADOdb/ADOdb@11107d6 · GitHub
看來是 function pg_insert_id($tablename,$fieldname) 會將這兩個參數傳進去,然後組出 SQL 語法,但是這兩個參數沒有經過 pg_escape_identifier
如果有用到 ADOdb 的記得更新套件,沒用到的就當作複習 SQL Injection 的案例~ XD