是否可以通过PHP连接到SQL Server 2012时加密密码?

时间:2016-02-23 12:08:03

标签: php sql-server encryption

我在连接到SQL Server 2012时尝试加密密码。我知道有两种方法可以实现:

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

$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");
$connectionInfo = array( "UID"=>$uid,
                         "PWD"=>$pwd,
                         "Database"=>"AdventureWorks");

但我想知道是否可以加密它而不提及连接字符串中的原始密码。

我尝试使用以下代码,但是我收到一条错误消息,指出登录失败了。

$serverName = "serverName"; 
$connectionInfo = array( "Database"=>"DbName", 
                         "UID"=>"UserName", 
                         "PWD"=>"7110eda4d09e062aa5e4a390b0a572ac0d2c0220"); //Encrypted Password
$conn = sqlsrv_connect( $serverName, $connectionInfo);

3 个答案:

答案 0 :(得分:0)

它似乎不可能,此外,它并没有真正有用。不幸的是,为什么你会在你的代码中加密它(除非你使用直接套接字),mysql(或mssql或pgsql等)密码将始终在你的代码中可见。

但是,由于没有人能够看到你的代码(除非你的网站被黑了),这不是一个真正的问题。但目前我不认为这是一个问题,但也许你有充分的理由去做。

答案 1 :(得分:0)

如果您担心有人看到您的配置文件,您可以使用环境变量来存储您的密码,在Linux中有bashrc,我相信您也可以在Windows中设置环境变量,一旦您设置了它,您可以使用PHP调用环境变量,如$_ENV["MY_DB_PW"]。在许多方面使用您的系统的人仍然可以访问它,但至少他们不会在配置文件中看到普通密码;)希望有帮助。

答案 2 :(得分:0)

我在过去看过类似的东西,我认为解决方案是硬件安全模块(HSM),用于将密码存储在服务器上。

你可以在这里阅读它们: https://en.wikipedia.org/wiki/Hardware_security_module