【发布时间】:2012-07-11 21:51:31
【问题描述】:
我有一个用户可以填写的表格,数据将使用 PHP 存储到 MySQL 数据库中。到 Apache 服务器的连接是通过 HTTPS 加密的,我想加密到 MySQL 数据库的连接。 Apache 和 MySQL 都在同一台服务器机器上。
我在 Internet 上进行了挖掘,而 Stunnel 似乎正是我所需要的。在服务器上支持并激活 OpenSSL 和 SSL,因为我们可以选择使用标准端口和 stunnel 端口连接到 MySQL 服务器。但是,我在网上找到的所有文章都涉及使用 Stunnel 将 MySQL 客户端连接到外部 MySQL 服务器,而不是如何使用 PHP 连接到本地 MySQL 服务器。我可以假设仅仅因为表单是通过https传输的,并不意味着与数据库的连接也被加密了吗?
我用来连接MySQL的PHP代码是这样的:
$mysqli = new mysqli("ip","user", "password", "database", "standardport");
使用标准端口可以正常工作。但是,如果我将其更改为 Stunnel 端口,则会出现连接超时错误。显然我错过了一些东西;任何帮助和建议表示赞赏!谢谢!
【问题讨论】:
-
您的数据库是否以某种方式加密?您似乎要付出很多努力来保护流式传输的数据,但是如果 DBMS + web 服务器在同一台机器上,并且数据库没有加密,那么有人可以直接从磁盘读取它。 (我并不是说这是一个坏问题,只是我认为如果您的 DBMS 连接在同一台机器上,那么 SSL 隧道连接是矫枉过正的)
-
不,数据库没有加密,我同意你的观点,屏蔽连接有点偏执。但是,我的大学却坚持:(
-
在同一台机器上没有意义,也许你也可以说服你的大学。 STunnel 用于端点之间、服务器 A 和服务器 B 之间的加密,无论它们之间存在什么基础设施。如果您的大学担心有人在嗅探
webserver <-> mysql的连接,那么请在 服务器之间使用 STunnel。我现在要嗅探的是webserver <-> stunnel-endpoint,直到数据已经在隧道中(即stunnel-endpoint <-> stunnel-endpoint)之后,数据仍然没有加密,即使stunnel-endpoint <-> mysql是未加密的 -
所以 STunnel 可能在一定程度上有助于两台服务器之间的连接,但仍然不是 100% 安全吗?嗯,互联网真的是一个危险的地方:(但即使这是一个不必要的练习,使用 mysqli 建立 SSL 连接的正确语法是什么?
标签: php mysql encryption ssl stunnel