我正在开发一个面向公众的 Web 项目,该项目将部分由 OLAP 服务器提供支持。我想从安全的角度比较几种方法:
我最初的想法是通过 AJAX 将用户意图的一些表示传递给 Web 服务器,让 Web 服务器进行大量输入验证并构造适当的 MDX 表达式以传递给 OLAP 服务器,最后将 OLAP 结果代理回浏览器。(切线,这似乎是jpivot采用的方法;例如,我只是单击以深入到 jpivot 示例中的表中,发送到服务器的不是 MDX,而只是 x-www-form-urlencoded 字符串“wcf65768426.x=3&wcf65768426.y=3”。)
相比之下,xmla4js项目的前提似乎是打开防火墙端口并通过 XML/A 将您的 OLAP 服务器暴露给世界(或至少暴露给您的特定客户),在客户端 javascript 中编写 MDX 查询,并直接使用浏览器打OLAP服务器。
我的直觉反应是对第二种方法持怀疑态度。如果有人对我的 OLAP 服务器执行任意 MDX 语句,似乎不会发生任何坏事。我还不是特别高级 MDX 的学生,但对我来说,这并不是一个无风险的提议。至少有人可以启动一些非常昂贵的查询,或者下载比您希望轻松提供给人们更大的数据集。这不是人们通常对 SQL 服务器做的那种事情,而且我最初倾向于认为同样的原因表明您也不应该对 OLAP 服务器做这件事。
但我也想假设 xmla4js 背后的人有一些用例,这些用例并不是疯狂的安全风险。我想我可能会过于谨慎地考虑这个问题。
任何更有经验的 OLAP 人员想要评论让人们直接敲击您的 OLAP 服务器(例如通过 XML/A)是否明智?