Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用哈希密码连接到MySQL?_Php_Mysql_Hash_Connection - Fatal编程技术网

Php 使用哈希密码连接到MySQL?

Php 使用哈希密码连接到MySQL?,php,mysql,hash,connection,Php,Mysql,Hash,Connection,我想知道(使用Google时没有明确的结果)是否有任何方法可以使用散列密码通过PHP连接到MySQL数据库。假设我有以下几点: Password (plain): 'foobar' Password (sha1): '8843d7f92416211de9ebb963ff4ce28125932878' 现在我想这样连接到MySQL(以MySQL_*函数为例,我使用的是PDO): 我想这可能吗?以前有人这样做过吗?那么“哈希”就是密码。好处是什么?简单的答案是否定的 但是,只是想知道。。。你真正关

我想知道(使用Google时没有明确的结果)是否有任何方法可以使用散列密码通过PHP连接到MySQL数据库。假设我有以下几点:

Password (plain): 'foobar'
Password (sha1): '8843d7f92416211de9ebb963ff4ce28125932878'
现在我想这样连接到MySQL(以MySQL_*函数为例,我使用的是PDO):


我想这可能吗?以前有人这样做过吗?

那么“哈希”就是密码。好处是什么?

简单的答案是否定的


但是,只是想知道。。。你真正关心的是什么?有人入侵您的服务器并发现您的密码?

使用情况是多个开发人员编辑包含sql connect密码的.php文件,您可能不想让他们知道该密码

我认为一种解决方案是将connect语句移动到这样的文件中,确保没有$password变量,因为有人可以调用它并在稍后的.php文件中打印出来

mysql.php
<?php
    mysql_connect('db.cs.dal.ca','user','password');
    @mysql_select_db($database) or die( "Database Error ".mysql_error());
?>
mysql.php
并且只给你的self rw------对mysql.php文件的权限,然后在你的组中的所有可访问的.php文件中,你可以只包含该文件来唤起连接

index.php
<?php include("mysql.php") ?>

<!-- some web content -->

<?php mysql_close(); ?>
index.php
并授予开发人员组rw rw----对所有其他.php文件的权限,只要mysql.php文件的所有者能够读取它,它就应该在php服务器上执行。。。。。我想

例如,您还可以将mysql.php从git中排除,让开发人员使用自己的mysql.php文件运行自己的数据库本地副本,只需提供生产数据库的精简副本,供本地开发和测试使用

简单的回答是“不行”。

我知道你想完成什么:你可能在某个共享托管计划中,不能将配置文件放在html文件夹之上

Stefan认为黑客只是在寻找配置文件,并想让他为这些信息工作。一旦黑客意识到他需要更多信息,他必须再次破解该网站


这与用户名和密码表无关。这是针对MySQL配置文件的。

因此,即使有人获得了纯文本连接数据,也不会知道用户的密码。如果你在所有东西上都使用相同的密码,这才有关系。但是,作为谨慎的开发人员/管理员,你已经担心这个问题,所以你不会在其他任何地方也使用这个密码;-)你把它放在了一个无法通过你的网络服务器访问的地方。这样做的好处是隐私。我正在开发一个应用程序,它存储数据库连接值(在“主”数据库中)以使用该应用程序。我不认为它有什么好处。让我们假设MySQL有这样一个…connect_with_passwordhash()函数。我以某种方式访问了你的主数据库并窃取了你所有的密码哈希。现在,我能不能像你的脚本那样简单地给他们提供…用密码hash()连接密码?这是真的,尽管理论上不可能访问MySQL主数据库时,它给了用户更多的隐私存储密码hash。当有人访问主数据库时,窃取密码有什么意义?所有其他数据库(包括其他用户和密码)也运行在同一台服务器上,为什么不立即复制所有内容?这只是个隐私问题。。我知道可以使用普通密码或散列进行访问。如果有人可以访问该代码,那么无论您的密码是什么,他们都可以登录。只需使用一个长的随机生成的密码,不要向用户显示:-)。只是隐私,当您(例如)在数据库中未加密密码的情况下登录网站时,您是否希望使用它?您应该散列(而不是加密)用户密码的原因不是为了保护他们的数据,而是为了防止黑客,他们已经破坏了你的安全,并且可以访问一切,从能够获取你的登录详细信息到尝试重新使用它来访问你在其他网站(如电子邮件)上的详细信息。当你在混淆和安全之间徘徊时,要小心。
index.php
<?php include("mysql.php") ?>

<!-- some web content -->

<?php mysql_close(); ?>