通过加密安全地从 PHP 连接到 MSSQL?
回答 1
浏览 7741
2013-02-19
我需要从PHP连接到一个MSSQL数据库。然而,由于连接的是一个远程站点的服务器,我要求连接是加密的。
是否有可能只用PHP的mssql扩展或者PDO来加密与MSSQL服务器的连接?
你总是可以通过一个加密的路线对未加密的连接进行隧道化处理--一种方法可能是与在两台服务器之间看管你的网络的人交谈。
- halfer 2013-02-19
1 个回答
#1楼
已采纳
得票数 9
在实现与MSSQL的安全(加密)连接时,有3个方面是很重要的:
- 选项
Encrypt
和TrustServerCertificate
经常被一起使用。 - 默认情况下,SQL服务器安装了一个自签名的证书,它将用于加密连接--然而,自签名的证书是可以被攻击的。因此,它应该被替换为一个来自证书授权机构(CA)的证书。
- 更换证书后,你再设置
Encrypt = true
和TrustServerCertificate = false
(TrustServerCertificate = true
也可以,但这样你的连接就容易受到攻击)。
第*1条中的代码示例:
$serverName = "serverName";
$connectionInfo = array( "Database"=>"DbName",
"UID"=>"UserName",
"PWD"=>"Password",
"Encrypt"=>true,
"TrustServerCertificate"=>false);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
如果你使用PDO创建一个对象,并传递相关的参数。 更详细的解释请见下面的文章:
你能进一步解释一下你的意思吗,Erik?代码本身只是PHP,如果你不是MSSQL服务器的管理员,你可以联系管理员,问他是否可以建立一个安全的连接(你需要一个证书,但大多数网络托管商都提供这个)。
- am_ 2013-02-19
PHP sqlsrv需要SQL Server Native Client -php.net/manual/en/sqlsrv.requirements.php - 所以可能无法在linux上工作。
- HorusKol 2015-05-04
注意。我不得不更新到msodbcsql_17.4.2.1_x64.msi
- Robot70 2019-10-21