php - 防止其他人使用我的 conn.php 文件

标签 php mysql wamp

我正在做一个 CRUD 项目,我将数据库连接参数保存在一个名为 conn.php 的文件中,其代码如下

<?php

$conn = @mysql_connect('127.0.0.1','root','');
if (!$conn) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mt', $conn);
?>

我会在任何需要数据库连接的地方使用包含函数链接此文件,如下所示

<?php
include 'conn.php';
?>

但我只是想知道这是否不是一个安全漏洞,我的意思是任何人都可以编写他们的代码,只需包含该连接文件,然后就能够在我的数据库上进行操作。

我该如何阻止这个?我知道不使用 conn.php 并将数据库连接代码写入每个需要使用数据库的 php 页面可以解决这个问题,但是存在一个问题,如果我需要更改数据库连接参数,那么我将不得不更改需要与数据库一起使用的每个文件中的参数,这是不可行的,因为我最终可能会拥有数百个此类文件。那么解决这个问题的方法是什么?

最佳答案

关于这个话题,有很多话可以说。当然,您必须记住,从技术上讲,这些文件是供人们使用的!这就是人们访问您的网站时所做的事情 - 使用您的文件!您要避免的是允许他们恶意使用它们。例如,您需要确保在进行数据库查询时使用准备好的语句。您还可以通过在父文件中设置常量或变量,然后检查是否在将包含的所有其他文件中设置该常量或变量来防止直接使用某些文件(尽管这实际上并没有什么区别)。

人们不能只是“编写代码”并使用您的服务器文件,除非您的文件权限设置错误,哈哈。主要内容管理器将您所讨论的信息存储在内容管理器根目录的公共(public)文件夹中。

这是一些内容管理器所做的事情的示例,只是作为额外的安全层(但正如我所说,这是微不足道的......)

主文件:

define('EXEC', 1);

包含的文件:

<?php defined('EXEC') or die('Restricted access.');

我之所以称其为微不足道,是因为直接访问文件根本不应该成为安全问题。事实上,这对于调试来说可能是一件好事。如果该文件确实包含安全漏洞,那么至少必须通过父文件对其进行操作,这可能会减慢攻击速度。

关于php - 防止其他人使用我的 conn.php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18584082/

相关文章:

php - 使用 PHP 添加到 WAMP 服务器中创建的数据库?

php - Laravel 迁移在外键上爆炸。已经在使用 unsigned int 并引用创建的表

php - 在两个网站之间传输 xml

PHP 和 XML。使用 PHP 遍历 XML 文件

php - 如何调试 PHP 应用程序?

mysql - 复制 mysql 表的文件夹可以重用吗?

mysql - 如何用MySQL计算一列的值加上下一列的值

javascript - 我需要 php 函数来获取当前用户位置,例如街道名称

MySQL:如何计算按day_hour分组的分钟行

php - wamp/ Composer /laravel5 : localhost:8000 just stopped working for no reason