PHP中mysqli连接的安全最佳实践

PHP中mysqli连接的安全最佳实践,php,mysql,security,Php,Mysql,Security,我正在为网络安全课程开发一个小网站项目。 在PHP文档上使用mysqli_real_connect的最佳实践是什么 直接将db凭据作为函数的参数写入是一种好方法,还是应该以不同的方式传递它们 另外,用户看不到源代码,但我正在尝试查看是否存在我忽略的安全方面。在源代码中存储数据库凭据总是一个糟糕的主意。不要这样做。如果代码中有凭据,则存在需要解决的问题 您必须将凭据存储在应用程序的web根目录之外的某个位置,这样即使我们的服务器严重配置错误,它们也不会泄漏出去 你说“用户看不到源代码”,但这是一个

我正在为网络安全课程开发一个小网站项目。 在PHP文档上使用mysqli_real_connect的最佳实践是什么

直接将db凭据作为函数的参数写入是一种好方法,还是应该以不同的方式传递它们


另外,用户看不到源代码,但我正在尝试查看是否存在我忽略的安全方面。

在源代码中存储数据库凭据总是一个糟糕的主意。不要这样做。如果代码中有凭据,则存在需要解决的问题

您必须将凭据存储在应用程序的web根目录之外的某个位置,这样即使我们的服务器严重配置错误,它们也不会泄漏出去

你说“用户看不到源代码”,但这是一个经常被误解的假设。拙劣的配置可以禁用PHP,将
.PHP
文件呈现为用户可见的纯文本。如果您有一个
index.php
,其中包含凭据,那么您刚刚泄漏了这些凭据。您还可能在无意中错误配置服务器,启用了
.phps
支持,这意味着任何人都可以请求任何页面的源代码并获得它,并完成漂亮的语法高亮显示

在某些情况下,SQL注入错误允许攻击者开始从服务器下载任意文件。如果这是与PHP应用程序相同的服务器,那么您的状态就很糟糕。在这里,保持数据库和应用程序之间的分离会有很大帮助。将它们部署在两个不同的虚拟机或容器上


看看框架建议您如何配置它们。通常,版本控制系统中甚至没有存储单独的配置目录,您也不希望在其中存储凭据。

使用pdo或mysqli mysql已过时且不推荐使用。看看你是否想了解所有关于这个问题的好答案!它甚至不必是一个拙劣的配置。Web服务器是一种软件。软件有漏洞。某些情况可能会使web服务器无法正确处理php文件。@MagnusEriksson确实存在一些令人担忧的错误,这些错误允许人们在未经授权的情况下获取源代码。最好假设有一天“源代码”会泄漏,这就是为什么大多数框架都有一个枯燥的
index.php
,而web根目录中完全没有其他内容。Apache在一些严重负载下也会开始表现不稳定。我也同意。如果你遵循这个原则(大多数半现代到现代的框架/应用程序都这么做),这很容易。@MagnusEriksson我不这么认为。我们都有。我听到了!;-)