Skip to content

Commit af3b32b

Browse files
authored
[5.3] Consistent Database Name Validation (#44623)
1 parent 012d81c commit af3b32b

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

administrator/components/com_config/src/Model/ApplicationModel.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,19 @@ public function save($data)
299299
'prefix' => $data['dbprefix'],
300300
];
301301

302+
// Validate database name
303+
if (\in_array($options['driver'], ['pgsql', 'postgresql']) && !preg_match('#^[a-zA-Z_][0-9a-zA-Z_$]*$#', $options['database'])) {
304+
$app->enqueueMessage(Text::_('COM_CONFIG_FIELD_DATABASE_NAME_INVALID_MSG_POSTGRES'), 'warning');
305+
306+
return false;
307+
}
308+
309+
if (\in_array($options['driver'], ['mysql', 'mysqli']) && preg_match('#[\\\\\/]#', $options['database'])) {
310+
$app->enqueueMessage(Text::_('COM_CONFIG_FIELD_DATABASE_NAME_INVALID_MSG_MYSQL'), 'warning');
311+
312+
return false;
313+
}
314+
302315
if ((int) $data['dbencryption'] !== 0) {
303316
$options['ssl'] = [
304317
'enable' => true,

administrator/language/en-GB/com_config.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ COM_CONFIG_FIELD_DATABASE_ENCRYPTION_MODE_VALUE_ONE_WAY="One-way authentication"
5555
COM_CONFIG_FIELD_DATABASE_ENCRYPTION_MODE_VALUE_TWO_WAY="Two-way authentication"
5656
COM_CONFIG_FIELD_DATABASE_ENCRYPTION_VERIFY_SERVER_CERT_LABEL="Verify Server Certificate"
5757
COM_CONFIG_FIELD_DATABASE_HOST_LABEL="Host"
58+
COM_CONFIG_FIELD_DATABASE_NAME_INVALID_MSG_MYSQL="The database name is invalid. It must not contain the following characters: \ /"
59+
COM_CONFIG_FIELD_DATABASE_NAME_INVALID_MSG_POSTGRES="The database name is invalid. It must start with a letter, followed by alphanumeric characters."
5860
COM_CONFIG_FIELD_DATABASE_NAME_LABEL="Database Name"
5961
COM_CONFIG_FIELD_DATABASE_PASSWORD_DESC="Do not edit this field unless absolutely necessary (eg after the transfer of the database to a new hosting provider)."
6062
COM_CONFIG_FIELD_DATABASE_PASSWORD_LABEL="Database Password"

0 commit comments

Comments
 (0)