Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
网站安全sql数据库访问密码php_Php_Sql - Fatal编程技术网

网站安全sql数据库访问密码php

网站安全sql数据库访问密码php,php,sql,Php,Sql,我是PHP和SQL的初学者。也许这是一个愚蠢的问题,但我真的很想听听专业人士的意见,因为我也计划进入网站行业 当我们尝试在网站上执行sql查询时,例如通过PHP,我们需要在执行此操作之前与数据库建立连接: $mysqli = new mysqli("localhost", "root", "password", "my_db"); 但是做这种事让我感到不安,因为我觉得它不安全。我必须通过脚本传递密码,该脚本有机会向web用户公开 是否有更安全的方法将密码传递给SQL命令?专业行业的人会如何处理

我是PHP和SQL的初学者。也许这是一个愚蠢的问题,但我真的很想听听专业人士的意见,因为我也计划进入网站行业

当我们尝试在网站上执行sql查询时,例如通过PHP,我们需要在执行此操作之前与数据库建立连接:

$mysqli = new mysqli("localhost", "root", "password", "my_db");
但是做这种事让我感到不安,因为我觉得它不安全。我必须通过脚本传递密码,该脚本有机会向web用户公开


是否有更安全的方法将密码传递给SQL命令?专业行业的人会如何处理这个问题

这是正确的方法

密码通常位于变量/常量中,该变量将传递给此命令


如果从PHP服务器提供此文件,web上的用户将无法看到此文件的源。因此,他们将永远看不到密码。

这在正常情况下是正确和安全的。PHP是一种服务器端语言,因此所有代码都在服务器上计算,只有输出被发送到客户端。因此,您的DB凭据将永远不会传输给用户


当然,如果您的服务器配置不正确,并且它以明文形式提供PHP文件,而不是执行它,那么您将遇到问题。

您应该使用单向加密算法,然后将加密传递到数据库中存储。我想重新实施单向加密,这样即使有人得到了它,他们也不能用它做任何事情。然后,当检查密码是否匹配时,您将获取输入的密码并对其进行加密,然后进行匹配的加密。您从未解密过密码,也无法解密密码。基本上,密码加密后,你只需扔掉它,再也不用它了

PHP文件中使用的密码通常是一个只允许从localhost访问数据库的帐户。因此,即使我知道密码,我也无法通过互联网访问数据库。连接必须来自同一台计算机,因此只要您保护对服务器和其他服务的访问,您就可以了。此外,MySQL的默认配置是只侦听来自本地主机的连接。

是否向web用户公开?怎样?它是php,除非在极为罕见的服务器故障情况下(它提供php而不解析它,而是作为文本文件),否则最终用户无法访问它。这就是它的工作方式(好吧,有点像,那些可以从配置文件中提供,只是变量不是硬编码的)在回答之前先阅读问题,OP是在谈论数据库连接数据,而不是登录系统。顺便说一句,我相信你的意思是“散列”,而不是“加密”。嗯,这只是部分正确。如果我连接到服务器的DB接口(如Phpmyadmin)并输入我在代码中看到的用户名和密码,会怎么样?在许多托管提供商中,PMA目录很容易访问,而公共密码和phpmyadmin的组合并不安全。我从来都不知道我可以在你提到的环境下玩。谢谢!谢谢你的回复!我认为黑客可以尝试下载php代码。我觉得我想得太多了。