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

Eri*_*rik 4 php sql-server pdo

我需要从 PHP 连接到 MSSQL 数据库。但是,当连接远程站点上的服务器时,我要求对连接进行加密。

是否可以仅使用 PHP 的 mssql 扩展或 PDO 来加密与 MSSQL 服务器的连接?

am_*_*am_ 10

实现与 MSSQL 的安全(加密)连接时,有 3 件事很重要:

  1. 选项EncryptTrustServerCertificate经常一起使用。
  2. 默认情况下,SQL Server 安装一个自签名证书,用于加密连接 - 但自签名证书容易受到攻击。因此应该将其替换为来自证书颁发机构 (CA) 的证书。
  3. 替换证书后,您可以设置Encrypt = true并且TrustServerCertificate = falseTrustServerCertificate = true也可以工作,但是您的连接将容易受到攻击)

文章 *1 中的代码示例:

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

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

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