繁体   English   中英

PHP和MySQL连接更安全

[英]PHP & MySQL connection more secure

我有一个包含连接数据到我的MySQL数据库,这是我一个小页面include在需要它的其他页面。 小代码是:

[connect_DB.php]
----------------
<?php

define("HOST", "localhost");
define("USER", "myUser");
define("PASSWORD", "myPasword");
define("DATABASE", "members");

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

?>

我的一个朋友向我证明了他可以下载.PHP文件,并在不到2分钟的时间内完成了下载。 这意味着他获得了我的MySQL服务器的登录信息。 我想知道是否存在另一种与数据库连接的方式,而无需将密码存储在文件中,等等。他建议我使用SSL或TSL,或者只是将HTTPD.CONF或.HTACCES配置为不允许“外部”访问到文件。 那是正确的还是可以实现的?

我实际上是在Wamp Server(Win7)上进行测试,因此无法创建.HTACCESS文件,因为它告诉我输入该文件的名称(我已经在介绍它了! 。

我知道这可能是一个重复的问题,但是请相信我,我读了很多文章,但我不知道该怎么办。 预先谢谢你。

很可能是,您的服务器未正确安装,这意味着PHP引擎未运行,因此它只是将文件内容发送或显示为text/html并且未被PHP解析。 这是注释中提到的某些工具可能访问文件的唯一方法,如果某处没有链接,则该工具也将看不到该文件,因此也许您已启用目录索引。

要测试您是否启用了PHP,只需制作一个文件并将其放入: <?php phpinfo(); ?> <?php phpinfo(); ?>如果它显示您的php信息,则显示为树桩,如果没有,则表明您的服务器配置了错误的PHP。

尽管已修复,但好的做法是将敏感文件放在Web根目录之外。 将常量中的值设置为get_defined_constants()之类的函数并不是一个好主意,它可以访问敏感值。 只需将它们直接放在构造参数中即可。

如果要阻止仅PHP可以访问的目录的访问,请创建一个.htaccess文件,并deny from all文件,这将导致服务器发送403 Forbidden。

我很确定您的宿主提供程序没有解析PHP文件,因为如果源代码通过了解释器,则无法下载源代码。

确保已安装,配置和激活了PHP,如有疑问,请与提供商的支持联系。 最简单的测试方法是上传文件:

test.php的

<?php phpinfo(); ?>

为了保护文件,将数据库配置php放在public_htmlhtmlhtdocs目录(其中最有可能是您的文档根目录)之外就足够了,您仍然可以在其中include(); 通过PHP。

另一个解决方案是通过.htaccess保护文件,您可以在文件中放入类似内容并将其上传到document_root:

<Files db_config.php>
deny from all
</Files>

为了增加一点安全性,您可以通过在顶部添加db_config.php来保护它:

if (!defined('IN_MY_PROJECT')) {
    die('forbidden');
}

并将其放在您的index.php之上:

define('IN_MY_PROJECT', true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM