load data infile 是 MySQL 的功能,可以被利用來讀取本機端 (server) 的檔案內容 (同 phpMyAdmin 匯入的動作)

底下的測試結果會讓你覺得就是應該要關閉這個功能才是啊

先講怎麼關 ? 編輯 vi /etc/my.cnf (再重啟 mysql) (一般使用者就無法使用,不過 root 權限還是可以 load data infile 的)

[mysqld]
local-infile=0

接著底下是模擬過程

一般使用者登入 phpMyAdmin

先建個 TABLE 如下

CREATE TABLE `test` (
  `a` varchar(255) NOT NULL,
  `b` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

再執行 SQL 語法

load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';

結果 (/etc/passwd 的內容都被塞入資料庫了)

mysql-local-infile

 

最後修改日期: 2020 年 02 月 07 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。