通过加密安全地从 PHP 连接到 MSSQL?

回答 1 浏览 7741 2013-02-19

我需要从PHP连接到一个MSSQL数据库。然而,由于连接的是一个远程站点的服务器,我要求连接是加密的。

是否有可能只用PHP的mssql扩展或者PDO来加密与MSSQL服务器的连接?

Erik 提问于2013-02-19
你总是可以通过一个加密的路线对未加密的连接进行隧道化处理--一种方法可能是与在两台服务器之间看管你的网络的人交谈。halfer 2013-02-19
1 个回答
#1楼 已采纳
得票数 9

在实现与MSSQL的安全(加密)连接时,有3个方面是很重要的:

  1. 选项EncryptTrustServerCertificate经常被一起使用。
  2. 默认情况下,SQL服务器安装了一个自签名的证书,它将用于加密连接--然而,自签名的证书是可以被攻击的。因此,它应该被替换为一个来自证书授权机构(CA)的证书。
  3. 更换证书后,你再设置Encrypt = trueTrustServerCertificate = falseTrustServerCertificate = true也可以,但这样你的连接就容易受到攻击)。

第*1条中的代码示例:

$serverName = "serverName";
$connectionInfo = array( "Database"=>"DbName",
                         "UID"=>"UserName",
                         "PWD"=>"Password",
                         "Encrypt"=>true,
                         "TrustServerCertificate"=>false);
$conn = sqlsrv_connect( $serverName, $connectionInfo);

如果你使用PDO创建一个对象,并传递相关的参数。 更详细的解释请见下面的文章:

*1 - http://blogs.msdn.com/b/brian_swan/archive/2011/03/08/sql-server-driver-for-php-connection-options-encrypt.aspx

am_ 提问于2013-02-19
am_ 修改于2013-02-19
避免仅有链接的答案Quentin 2013-02-19
你能进一步解释一下你的意思吗,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.msiRobot70 2019-10-21
标签