如何在不提供远程访问的情况下将mysql数据库内容嵌入第三方站点

时间:2011-01-26 12:13:33

标签: php mysql

我正在编写一组基于HTML的资源,存储在我们服务器上的mysql数据库中。资源包含图像引用,它们存储为相对路径。

我可以登录管理面板,轻松创建和编辑资源。

这一切都已完成,并且运作良好。

但是,我们希望以两种方式提供此资源:打包和托管。提供真正问题的是托管解决方案:

我们希望托管数据库和所有图像资源,但是我们希望通过一组模板来访问资源,以便其他用户在自己的网站上托管。这样他们就可以相应地标记模板,并且可以在他们自己的URL上获得资源,例如

http://www.example.com/discojoe

我对这个过程有两个问题,这让我真正感到头疼:

•我意识到为我们的mysql服务器提供甚至只读访问的明显安全含义。我想到的唯一选择是在我们的服务器上运行的一些服务器端代码,在请求时,将请求的数据喷射回用户。这使他们不需要任何mysql连接。

我是否可以阅读上述类型的在线场景示例,或者您可以就如何解决此解决方案提供一些指示?

•对于我们将数据流式传输到的用户(如果上述解决方案合理),我该如何在HTML内容中动态更新图像SRC值。虽然我希望它作为相对URL存储在数据库中,但是当我从数据库中检索数据时,我想将所有图像srcs从相对转换为绝对,并使用我指定的绝对URL。

2 个答案:

答案 0 :(得分:2)

  

我意识到明显的安全性   提供均匀的含义   对我们的mysql服务器的只读访问权限。   我想到的唯一选择是   我们运行的一些服务器端代码   服务器,当要求时,喷出   请求的数据返回给用户。   这消除了他们的需要   任何mysql连接。

您可以使用PDO预处理语句的预定义查询创建REST API(我将返回JSON)(安全地防止SQL注入)。稍微小心一点,你可以让它非常安全。当然,如果资源应该受到保护,您还必须使用简单的API密钥向系统添加身份验证。我认为您可以像防止CSRF($token = md5(uniqid(rand(), TRUE));)一样轻松生成这些密钥。也许你应该多加一点entropy,但我认为这已经足够了。但如果你想真正做到这一点,你应该使用oauth代替。


有一点mod_rewriting你可以写漂亮的网址。

  

对于我们将数据流式传输到的用户   (如果上述解决方案合情合理),   我怎么能去更新   图像SRC值在飞行中   HTML内容。虽然我希望它存储   作为数据库中的相对URL,   当我从中检索数据时   数据库,我想转换所有图像   srcs从相对到绝对,有   我指定的绝对URL。

我认为您可以使用any of the many available template languages来实现这一目标。甚至jquery has one built-in

答案 1 :(得分:1)

创建REST样式的Web服务。也就是说,设置一个响应数据请求的HTTP服务器,使用一些服务器代码加载模板,更改URL和其他内容(相对于绝对),并将其作为HTML(甚至CSS)的片段发送到客户端)。

在另一个Web服务器上运行的用户可以使用HTTP客户端软件包来使用您的Web服务,将生成的代码片段合并到她的页面中,然后将其发送出去。

或者,您可以构建代码片段,以便它们在iframe对象中起作用。在这种情况下,您的用户将构建她的代码,以便向最终用户提供iframe对象,并在其中引用您的服务器。

最后,您的Web服务可以提供XML或JSON,并在最终用户的浏览器中被AJAX风格的javacscript使用。

阻止从随机客户端直接访问mySQL表服务器是绝对正确的。