MySQL: Disallow LOAD DATA LOCAL INFILE
This commit is contained in:
parent
2780eb01f5
commit
c564a8ef50
|
@ -30,6 +30,7 @@ if (!defined("DRIVER")) {
|
||||||
(!is_numeric($port) ? $port : $socket),
|
(!is_numeric($port) ? $port : $socket),
|
||||||
($ssl ? 64 : 0) // 64 - MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT (not available before PHP 5.6.16)
|
($ssl ? 64 : 0) // 64 - MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT (not available before PHP 5.6.16)
|
||||||
);
|
);
|
||||||
|
$this->options(MYSQLI_OPT_LOCAL_INFILE, false);
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +57,7 @@ if (!defined("DRIVER")) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif (extension_loaded("mysql") && !(ini_get("sql.safe_mode") && extension_loaded("pdo_mysql"))) {
|
} elseif (extension_loaded("mysql") && !((ini_bool("sql.safe_mode") || ini_bool("mysql.allow_local_infile")) && extension_loaded("pdo_mysql"))) {
|
||||||
class Min_DB {
|
class Min_DB {
|
||||||
var
|
var
|
||||||
$extension = "MySQL", ///< @var string extension name
|
$extension = "MySQL", ///< @var string extension name
|
||||||
|
@ -74,6 +75,10 @@ if (!defined("DRIVER")) {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function connect($server, $username, $password) {
|
function connect($server, $username, $password) {
|
||||||
|
if (ini_bool("mysql.allow_local_infile")) {
|
||||||
|
$this->error = lang('Disable %s or enable %s or %s extensions.', "'mysql.allow_local_infile'", "MySQLi", "PDO_MySQL");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$this->_link = @mysql_connect(
|
$this->_link = @mysql_connect(
|
||||||
($server != "" ? $server : ini_get("mysql.default_host")),
|
($server != "" ? $server : ini_get("mysql.default_host")),
|
||||||
("$server$username" != "" ? $username : ini_get("mysql.default_user")),
|
("$server$username" != "" ? $username : ini_get("mysql.default_user")),
|
||||||
|
@ -230,10 +235,10 @@ if (!defined("DRIVER")) {
|
||||||
|
|
||||||
function connect($server, $username, $password) {
|
function connect($server, $username, $password) {
|
||||||
global $adminer;
|
global $adminer;
|
||||||
$options = array();
|
$options = array(PDO::MYSQL_ATTR_LOCAL_INFILE => false);
|
||||||
$ssl = $adminer->connectSsl();
|
$ssl = $adminer->connectSsl();
|
||||||
if ($ssl) {
|
if ($ssl) {
|
||||||
$options = array(
|
$options += array(
|
||||||
PDO::MYSQL_ATTR_SSL_KEY => $ssl['key'],
|
PDO::MYSQL_ATTR_SSL_KEY => $ssl['key'],
|
||||||
PDO::MYSQL_ATTR_SSL_CERT => $ssl['cert'],
|
PDO::MYSQL_ATTR_SSL_CERT => $ssl['cert'],
|
||||||
PDO::MYSQL_ATTR_SSL_CA => $ssl['ca'],
|
PDO::MYSQL_ATTR_SSL_CA => $ssl['ca'],
|
||||||
|
|
|
@ -29,6 +29,9 @@ if (extension_loaded('pdo')) {
|
||||||
$this->error = "";
|
$this->error = "";
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
list(, $this->errno, $this->error) = $this->errorInfo();
|
list(, $this->errno, $this->error) = $this->errorInfo();
|
||||||
|
if (!$this->error) {
|
||||||
|
$this->error = lang('Unknown error.');
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->store_result($result);
|
$this->store_result($result);
|
||||||
|
|
|
@ -22,6 +22,7 @@ $translations = array(
|
||||||
'No extension' => 'Žádné rozšíření',
|
'No extension' => 'Žádné rozšíření',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Není dostupné žádné z podporovaných PHP rozšíření (%s).',
|
'None of the supported PHP extensions (%s) are available.' => 'Není dostupné žádné z podporovaných PHP rozšíření (%s).',
|
||||||
'Connecting to privileged ports is not allowed.' => 'Připojování k privilegovaným portům není povoleno.',
|
'Connecting to privileged ports is not allowed.' => 'Připojování k privilegovaným portům není povoleno.',
|
||||||
|
'Disable %s or enable %s or %s extensions.' => 'Zakažte %s nebo povolte extenze %s nebo %s.',
|
||||||
'Session support must be enabled.' => 'Session proměnné musí být povolené.',
|
'Session support must be enabled.' => 'Session proměnné musí být povolené.',
|
||||||
'Session expired, please login again.' => 'Session vypršela, přihlašte se prosím znovu.',
|
'Session expired, please login again.' => 'Session vypršela, přihlašte se prosím znovu.',
|
||||||
'The action will be performed after successful login with the same credentials.' => 'Akce bude provedena po úspěšném přihlášení se stejnými přihlašovacími údaji.',
|
'The action will be performed after successful login with the same credentials.' => 'Akce bude provedena po úspěšném přihlášení se stejnými přihlašovacími údaji.',
|
||||||
|
@ -54,6 +55,7 @@ $translations = array(
|
||||||
'Query executed OK, %d row(s) affected.' => array('Příkaz proběhl v pořádku, byl změněn %d záznam.', 'Příkaz proběhl v pořádku, byly změněny %d záznamy.', 'Příkaz proběhl v pořádku, bylo změněno %d záznamů.'),
|
'Query executed OK, %d row(s) affected.' => array('Příkaz proběhl v pořádku, byl změněn %d záznam.', 'Příkaz proběhl v pořádku, byly změněny %d záznamy.', 'Příkaz proběhl v pořádku, bylo změněno %d záznamů.'),
|
||||||
'No commands to execute.' => 'Žádné příkazy k vykonání.',
|
'No commands to execute.' => 'Žádné příkazy k vykonání.',
|
||||||
'Error in query' => 'Chyba v dotazu',
|
'Error in query' => 'Chyba v dotazu',
|
||||||
|
'Unknown error.' => 'Neznámá chyba.',
|
||||||
'Warnings' => 'Varování',
|
'Warnings' => 'Varování',
|
||||||
'ATTACH queries are not supported.' => 'Dotazy ATTACH nejsou podporované.',
|
'ATTACH queries are not supported.' => 'Dotazy ATTACH nejsou podporované.',
|
||||||
'Execute' => 'Provést',
|
'Execute' => 'Provést',
|
||||||
|
|
|
@ -22,6 +22,7 @@ $translations = array(
|
||||||
'No extension' => 'Xx',
|
'No extension' => 'Xx',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Xx (%s).',
|
'None of the supported PHP extensions (%s) are available.' => 'Xx (%s).',
|
||||||
'Connecting to privileged ports is not allowed.' => 'Xx.',
|
'Connecting to privileged ports is not allowed.' => 'Xx.',
|
||||||
|
'Disable %s or enable %s or %s extensions.' => 'Xx %s xx %s xx %s xx.',
|
||||||
'Session support must be enabled.' => 'Xx.',
|
'Session support must be enabled.' => 'Xx.',
|
||||||
'Session expired, please login again.' => 'Xx.',
|
'Session expired, please login again.' => 'Xx.',
|
||||||
'The action will be performed after successful login with the same credentials.' => 'Xx.',
|
'The action will be performed after successful login with the same credentials.' => 'Xx.',
|
||||||
|
@ -54,6 +55,7 @@ $translations = array(
|
||||||
'Query executed OK, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'),
|
'Query executed OK, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'),
|
||||||
'No commands to execute.' => 'Xx.',
|
'No commands to execute.' => 'Xx.',
|
||||||
'Error in query' => 'Xx',
|
'Error in query' => 'Xx',
|
||||||
|
'Unknown error.' => 'Xx.',
|
||||||
'Warnings' => 'Xx',
|
'Warnings' => 'Xx',
|
||||||
'ATTACH queries are not supported.' => 'Xx.',
|
'ATTACH queries are not supported.' => 'Xx.',
|
||||||
'Execute' => 'Xx',
|
'Execute' => 'Xx',
|
||||||
|
|
|
@ -7,6 +7,7 @@ Decrease timeout for running slow queries from 5 seconds to 2 seconds
|
||||||
Fix displaying info about non-alphabetical objects (bug #599)
|
Fix displaying info about non-alphabetical objects (bug #599)
|
||||||
Use secure cookies on HTTP if session.cookie_secure is set
|
Use secure cookies on HTTP if session.cookie_secure is set
|
||||||
PDO: Support binary fields download
|
PDO: Support binary fields download
|
||||||
|
MySQL: Disallow LOAD DATA LOCAL INFILE
|
||||||
MySQL: Use CONVERT() only when searching for non-ASCII (bug #603)
|
MySQL: Use CONVERT() only when searching for non-ASCII (bug #603)
|
||||||
MySQL: Order database names in MySQL 8 (bug #613)
|
MySQL: Order database names in MySQL 8 (bug #613)
|
||||||
PostgreSQL: Add SQL operator to search
|
PostgreSQL: Add SQL operator to search
|
||||||
|
|
Loading…
Reference in a new issue