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 的內容都被塞入資料庫了)
留言