Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sqlsrv driver needs encrypt state in config array #265

Open
DaniDuesentrieb opened this issue Jun 16, 2022 · 2 comments
Open

sqlsrv driver needs encrypt state in config array #265

DaniDuesentrieb opened this issue Jun 16, 2022 · 2 comments

Comments

@DaniDuesentrieb
Copy link

Steps to reproduce the issue

If you want to Connect to an unencrpyted MsSQL Server with the following connection array, a connection could not be established, because the encryption could not be set.

$option['driver'] = 'sqlsrv'; 
$option['host'] = 'server\\instancename, 1433';
$option['port'] = 1433;
$option['user'] = 'user';
$option['password'] = 'pass';
$option['database'] = 'DBName';
$option['prefix'] = '';

return JDatabaseDriver::getInstance($option);

Expected result

In the config array there is an option "encrypt" to set the state.

$option['driver'] = 'sqlsrv'; 
$option['host'] = 'server\\instancename, 1433';
$option['port'] = 1433;
$option['user'] = 'user';
$option['password'] = 'pass';
$option['database'] = 'DBName';
$option['prefix'] = '';
$option['encrypt'] = false;

return JDatabaseDriver::getInstance($option);

Actual result

System information (as much as possible)

Joomla 4.1.4
PHP 7.4.28
Linux Ubuntu Webserver
sql_srv extension 5.10.0

Additional comments

In the file libraries\vendor\joomla\database\src\Sqlsrv\SqlsrvDriver.php at line 117 to 124 the config array needs the option encrypt, so the array must be change from this:

$config = [
	'Database'             => $this->options['database'],
	'uid'                  => $this->options['user'],
	'pwd'                  => $this->options['password'],
	'CharacterSet'         => 'UTF-8',
	'ReturnDatesAsStrings' => true
];

to this:

$config = [
	'Database'             => $this->options['database'],
	'uid'                  => $this->options['user'],
	'pwd'                  => $this->options['password'],
	'CharacterSet'         => 'UTF-8',
	'ReturnDatesAsStrings' => true,
	'encrypt'	       => $this->options['encrypt']
];
@richard67
Copy link
Contributor

I think the suggested code change alone will not be sufficient because it requires $this->options['encrypt'] to be set. The code should also work if the option is not set, either by using a default value in that case or by only adding it to the $config array only if it is set.

@richard67
Copy link
Contributor

richard67 commented Jun 16, 2022

As we don't seem to support encrypted connections with the MS SQL driver (if I remember right), we could also just set the encrypt value to false in general in the $config array instead of having an option for it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants