服务器 频道

为你的论坛加把锁——Discuz!篇(图)

    【IT168 专稿】前几天笔者为大家介绍了建立Discuz!论坛的方法(点击查看),虽然整个建立过程非常简单,我们也可以通过这个论坛发表留言,回复帖子。但是通过该方法建立的Discuz!论坛却存在着一个安全隐患。这个安全隐患并不是由Discuz!自身带来的,几乎所有使用mysql数据库的论坛都会出现此问题。今天就为各位读者介绍如何弥补此问题,让所有使用mysql数据库的论坛安全性更高。当然在这里还要强调的一点是,数据库默认密码是空存在于所有使用mysql数据库的论坛中,并不是仅仅在Discuz!论坛中存在。只是因为使用Discuz!论坛的用户比较多,所以本文才用他举例进行介绍。

一、问题根源:

    一般来说我们安装的mysql默认密码是空的,任何黑客都可以通过这个空密码连接数据库,从而将mysql数据库内容全部窃取。由于论坛主程序调用的是mysql数据库文件,所以数据库文件中存放的是论坛所有注册会员的资料信息以及所有论坛留言帖子信息。因此保护mysql数据库文件是保证论坛安全的基础。

二、通过phpmyadmin管理mysql:

    默认管理mysql数据库的程序是名为phpmyadmin的组件,他是由PHP语言编写而成的。当我们建立好论坛后可以通过浏览器访问http://localhost/phpmyadmin/这个地址。(如图1)

图1 点击看大图

    初次登录phpmyadmin我们看到的是英文界面,可以通过右边的下拉菜单选择Chinese simplified(zh)修改为中文简体。

    我们可以通过phpmyadmin对mysql数据库进行添加新数据库文件,给某个数据库添加新表,给某个表添加新的键值等操作。也可以设置数据库访问权限,导出和备份数据库。总之对于mysql数据库的所有操作都可以通过phpmyadmin进行。

三、弥补默认空密码漏洞:

    接下来就告诉大家如何弥补默认数据库空密码的漏洞,为我们的论坛加把牢靠的锁。

    第一步:将phpmyadmin修改为简体中文后我们会发现下方会出现“您配置文件中的设定与MYSQL默认权限帐户(没有密码的ROOT)。您的MYSQL服务器使用默认值运行当然没有问题,不过这样的话,被入侵的可能性会很大,您真的应该先补上这个安全漏洞”的提示,说明我们的数据库密码为空。(如图2)

图2 点击看大图

    第二步:这时我们应该先搜索本地计算机,查找一个名为config.inc.php的文件。(如图3)
图3 点击看大图

    小提示:也许你在搜索本地计算机时会找到很多个config.inc.php文件,这个是正常的,我们只需要编辑位于phpmyadmin目录下的那个即可。

    第三步:使用记事本编辑此文件,打开该文件后会发现里头有很多内容。(如图4)

图4 点击看大图

    第四步:通过记事本的查找功能找到“$cfg[''servers''][''password'']这个字符串。这个字符串后头接的就是我们phpmyadmin连接MYSQL数据库时使用的密码,我们为其添加一个密码。例如加上111111。(如图5)
图5 点击看大图

    第五步:不要以为仅仅修改这么一个地方就可以大功告成了,因为我们修改了phpmyadmin连接MYSQL数据库时使用的密码,所以再次访问phpmyadmin时就会收到数据库无法访问的提示。(如图6)
图6 点击看大图

    第六步:接下来就是要修改数据库的真正密码,只有把真正密码也修改为111111才能保证phpmyadmin正常连接该数据库,方法是在命令行模式中进入mysql下的bin目录,如果使用服务器套件进行安装的话该目录为d:\usr\local\mysql\bin。进入bin目录输入mysqladmin -u root -p password 111111来修改数据库的自身密码,然后会要求你输入原来的密码,由于以前密码是空所以直接回车即可,从而完成了对数据库密码的修改工作。(如图7)
图7 点击看大图

    第七步:我们又可以通过浏览器访问http://localhost/phpmyadmin/来调用MYSQL数据库了。(如图8)
图8 点击看大图

    第八步:然而此时浏览器中输入http://127.0.0.1却没有出现Discuz!论坛主界面,主要原因是Discuz!论坛中还需要对数据库密码的访问进行修改设置。(如图9)
图9 点击看大图

    第九步:通过寻找Discuz!论坛主程序中的名为config.inc文件并编辑他来修改Discuz!连接数据库的密码。我们直接查找$dbpw关键字即可,将其后头的密码修改为111111。(如图10)
图10 点击看大图

    第十步:只有将mysql数据库自身密码,phpmyadmin连接数据库的连接密码还有Discuz!论坛自身调用数据库时使用的密码这三者都进行修改并统一,才能保证论坛的正常访问,数据库的正常管理。(如图11)
图11 点击看大图

    第十一步:再次访问phpmyadmin后刚才出现的“您配置文件中的设定与MYSQL默认权限帐户(没有密码的ROOT)。您的MYSQL服务器使用默认值运行当然没有问题,不过这样的话,被入侵的可能性会很大,您真的应该先补上这个安全漏洞”的提示消失了。说明我们的论坛与数据库得到了有效的保护,外来人再也不能使用空密码随便连接数据库了。(如图12)
图12 点击看大图

四、禁止非授权主机的访问:

    一般来说我们管理mysql数据库都是通过本地localhost来完成的,也就是说网络管理员登录服务器进行操作。所以说网络中的其他计算机应该不具有对数据库进行修改复制添加等操作的权限。然而在实际中刚刚建立的数据库是容许网络中所有计算机连接phpmyadmin来管理数据库的,只要你知道了数据库连接密码。这往往也是不安全的,我们应该在第一时间将其修改,只容许本地localhost对数据库进行访问。

    第一步:通过浏览器访问phpmyadmin,在phpmyadmin管理界面的首页点“权限”按钮。我们将看到用户一览处对于root用户,主机是%时密码是“否”的,也就是说不需要连接密码。而%代表的是任意主机。说明任意主机都可以在不需要密码的情况下连接我们的phpmyadmin。(如图13)

图13 点击看大图

    第二步:我们要取消任意主机对phpmyadmin的访问权限,在上面界面中点“编辑”按钮。然后在“更改”密码处输入一个访问密码,点“执行”按钮后生效。(如图14)
图14 点击看大图

    第三步:添加密码后我们就会发现用户一览中主机是%对应的密码参数已经变成了“是”,这说明网络中的其他计算机要想连接到本机phpmyadmin时是需要输入连接密码的。(如图15)
图15 点击看大图

    小提示:实际上还有一种方法可以彻底解决任意主机%对phpmyadmin管理工具的访问,那就是选中%主机对应的ROOT帐户,然后在下方删除选中用户处点“删除用户并重新读取权限”,最后执行即可。phpmyadmin将直接把该项删除。从而不管你知道不知道密码都无法从网络中访问该服务器上的phpmyadmin了。

总结:

    Discuz!论坛是应用最广泛的PHP+MYSQL论坛,各大网站都使用他建立论坛。所以说对于我们这些中小企业来说如果要选择php+mysql论坛就一定要使用Discuz!。不过安装完毕后需要按照本文介绍的防范方法弥补问题。这样才能让Discuz!更好的问我们服务,让mysql运行得更高效,让phpmyadmin管理得更得心应手。

0
相关文章