如何安全地从客户端查询MySQL数据库

如何安全地从客户端查询MySQL数据库,sql,mysql,security,encryption,Sql,Mysql,Security,Encryption,我正在做一个个人数字处理项目,我想在多台计算机上启动多个程序(也许有一天甚至在亚马逊的服务器上),并让它们在一个公共SQL数据库中存储和共享数据,该数据库位于我的web托管帐户上 托管公司不允许直接与SQL server建立外部连接,但我正在考虑编写一个精简的PHP脚本,该脚本驻留在服务器上,使用HTML POST命令从远程程序接收SQL命令,并将结果作为HTML传回。然后,我可以使用HTTP库将SQL命令直接传递到远程服务器并返回结果 显然,向服务器发送裸SQL命令是一个安全问题。我正在考虑使

我正在做一个个人数字处理项目,我想在多台计算机上启动多个程序(也许有一天甚至在亚马逊的服务器上),并让它们在一个公共SQL数据库中存储和共享数据,该数据库位于我的web托管帐户上

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

显然,向服务器发送裸SQL命令是一个安全问题。我正在考虑使用某种共享密钥加密来发送post命令,如果不加密返回,结果会很好


所以,我的问题是,我没有在想什么?我不是网络安全方面的专家,很明显我遗漏了一些东西。这里是否存在无法填补的重大安全漏洞?或者有没有其他方法或库来实现这一点,我还没有找到

最好将SQL作为存储过程存储在数据库中,并从脚本中调用这些SP。这样,您就不必发送任何简单的SQL(只需发送参数),而且维护起来也更容易

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


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

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

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