如何以安全的方式从客户端查询MySQL数据库

时间:2009-11-02 04:56:16

标签: sql mysql security encryption

我正在做一个个人数字运算项目,我想在多台计算机上启动多个程序(有一天甚至可能在亚马逊的服务器上),并让它们在一个共同的SQL数据库中存储和共享数据。在我的网络托管帐户上。

托管公司不允许外部连接直接连接到SQL服务器,但我正在考虑编写一个瘦PHP脚本,它将驻留在服务器上并使用HTML POST命令从远程程序接收SQL命令,然后传回结果为html。然后我可以使用HTTP库将SQL命令直接传递到远程服务器并获取结果。

显然,将裸SQL命令发送到服务器是一个安全问题。我正在考虑使用某种共享密钥加密来发送post命令,结果可以很好地回复未加密。

所以,我的问题是,我没有想到什么?我不是网络安全专家,我显然错过了一些东西。这里有一些重要的安全漏洞无法填补吗?还是有其他方法或库可以做到这一点,我还没有找到?

2 个答案:

答案 0 :(得分:1)

最好将SQL作为存储过程存储在数据库中,并从脚本中调用这些SP。这样你就不必发送任何普通的SQL(只是参数),它将更容易维护。

您对客户的意思是什么?作为Web应用程序(JavaScript)的客户端,您可以通过进行Ajax调用并将数据作为Json返回来执行它。 如果你的意思是一个Windows客户端,那么创建一个WebService而不仅仅是一个php页面并在你的应用程序中使用它更有趣。

至于加密,我认为通过SSL或多或少是确保完全安全的最佳/唯一方式。

答案 1 :(得分:0)

如果您的托管公司允许SSH,请使用您的mysql客户端通过SSH会话隧道连接到您的MySQL服务器。

要减少为每个查询发送的内容量,如上一个答案所示,请为这些查询创建存储过程,并仅使用适当的参数调用它们。