I'm working on a public-facing web project that will be powered in part by an OLAP server. I wanted to compare a couple ways of doing this from a security perspective:
My initial idea was to pass some representation of the user's intent to the web server via AJAX, have the web server do lots of input validation and construct an appropriate MDX expression to pass to the OLAP server, and finally proxy the OLAP results back to the browser. (Tangentially, this seems to be the approach taken by jpivot; e.g. I just clicked to drill down into a table in a jpivot example, and what got sent to the server wasn't MDX but simply the x-www-form-urlencoded string "wcf65768426.x=3&wcf65768426.y=3".)
In contrast, the xmla4js project seems premised on opening up a firewall port and exposing your OLAP server to the world (or at least to your particular customers) via XML/A, writing MDX queries in client-side javascript, and having the browser directly hit the OLAP server.
My gut reaction is to be quite suspicious of the second approach. It seems to presume that nothing bad can happen if someone were to execute arbitrary MDX statements against my OLAP server. I'm not yet a student of particularly advanced MDX, but it's not immediately obvious to me that this is a risk-free proposition. At very least someone could kick off some very expensive queries, or download a larger chunk of your dataset than you were hoping to easily make available to people. This isn't the sort of thing people generally do with SQL servers, and I'm initially inclined to think the same reasons suggest you shouldn't do it with OLAP servers either.
But I'd also like to assume that the folks behind xmla4js had some use cases in mind that were not crazy security risks. And I guess potentially I could be thinking about this too cautiously.
Any more experienced OLAP folks want to comment on the wisdom of letting people directly bang on your OLAP server, e.g. via XML/A?