Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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_Database_Security - Fatal编程技术网

Php 请问,在进入我的服务器提供商mysql之前,我需要保护密码吗

Php 请问,在进入我的服务器提供商mysql之前,我需要保护密码吗,php,database,security,Php,Database,Security,我目前正在设计一个小型社交网站,在我进行研究时遇到“密码散列”。我在一个托管网站上托管了该网站,因此,我不知道保护用户密码是我的工作,还是他们的工作是保护他们的数据库。如果你不明白我的问题,请提问,这样我可以解释 如果您使用的是一个流行的托管网站,比如godaddy.com,它们确实提供了保护,但这只有在您自己编写的代码是“安全的”时才重要。例如,如果您访问存储密码的数据库的代码允许sql注入,那么无论托管站点本身多么不可攻击,您都会为黑客提供一个后门 你的问题涉及面很广,我们没有太多的细节来作

我目前正在设计一个小型社交网站,在我进行研究时遇到“密码散列”。我在一个托管网站上托管了该网站,因此,我不知道保护用户密码是我的工作,还是他们的工作是保护他们的数据库。如果你不明白我的问题,请提问,这样我可以解释

如果您使用的是一个流行的托管网站,比如godaddy.com,它们确实提供了保护,但这只有在您自己编写的代码是“安全的”时才重要。例如,如果您访问存储密码的数据库的代码允许sql注入,那么无论托管站点本身多么不可攻击,您都会为黑客提供一个后门

你的问题涉及面很广,我们没有太多的细节来作为回答的基础。

简短回答:两者都有

保护数据库是他们和你的工作。你应该为你们中的一个或两个在这方面失败做好计划

访问控制 保护数据库的工作从您可以管理的内容开始:您使用的凭据,包括您和您正在制作的应用程序

提供任何类型的“特权访问”的所有内容都应该设置为需要登录,并且应该包含强密码(我建议使用随机密码生成器和/或密码管理器)。这可能包括但不限于:

  • 您和应用程序的数据库登录
  • FTP
  • SSH(考虑为此进行基于密钥的身份验证)
  • 你正在建立的网站上的管理员帐户
数据库应该需要连接一个密码,并且该密码应该是强密码(我建议使用随机密码生成器)。服务器本身的所有登录也是如此,可能包括FTP和SSH等内容,也可能包括正在构建的应用程序(如管理员帐户)的任何登录,以及其他应用程序(如PHP My admin)

应用程序安全 作为应用程序开发人员,您的角色是保护与数据库联系的应用程序。从确保数据库安全的角度来看,您最担心的是SQL注入。你提到你已经熟悉这一点,所以我将跳过基本内容

<强>强烈考虑使用参数化查询或ORM.<强> < /P> 如果每次编写查询时都依赖转义参数,则需要零错误才能确保数据库的安全。一个错误就可能造成严重后果

使用参数化查询或ORM可以为您解决这一问题,因此您无需担心,因此不太可能存在SQL注入漏洞

在构建应用程序时,您还需要遵循其他最佳安全实践—例如,即使不存在SQL注入漏洞,远程代码执行漏洞也可能导致数据库访问

不管怎么说,计划一次突破 考虑到常见的SQL注入漏洞,最好的做法是尽量减轻其后果。这就是密码散列的用武之地

简要概述:目标是让攻击者在数据库中存储数据的情况下非常耗时地确定密码。最好的选择是bcrypt和scrypt。你想要的东西是安全的,非常仔细的,特别是:慢

避免快速的事情,如MD5和SHA系列

附录:如果您管理数据库服务器 在共享主机安排中,主机为您运行数据库服务器。如果您正在管理它,例如,如果您必须下载并安装数据库服务器应用程序,那么您还有一些额外的工作要做


您需要使数据库的软件以及服务器上的所有软件(包括操作系统)保持最新,以确保您拥有最新的安全补丁。

您必须阅读服务条款(您将看到这是您的工作…)@fusion3k,是不是它们不提供任何保护,所以我可能也容易受到主机提供商的攻击?我认为它提供了一些保护。您可以通过阅读您的托管普通功能和服务条款来发现它。顺便说一句,您的脚本易受攻击(SQL注入,即),您的数据将易受攻击,与宿主功能无关。哈希密码和使用准备好的语句总是一个不错的选择。@fusion3k,非常感谢您的提示。我正在使用一个本地托管网站smartweb.com。我在这个网站上找到了很多帖子和答案,试图阻止注射。比如转义输入、引用、用mysqli_real_escape_字符串转义等等。所以,我认为我的代码是安全的。感谢您的提示,尽管我的评分很低。@stepinext我还建议使用
htmlspecialchars()
这可能是防止sql注入的最佳功能。