Hi! When using XSLT with Execute() like this:
$ret = Execute({ inputfile => 'foo.xml', recipe => 'EmbperlXSLT', xsltstylesheet => 'foo.xsl', }); without an 'xsltparam', the %fdat hash is used as default 'xsltparam'. I think this a) violates the principle of least surprise. It surprised me a lot and spend half an hour to figure out what a strange LibXSLT error meant that resulted from this. After I found it in the source code I also found it in the documentation, but I still think its the wrong thing to do because b) is a potential security risk. It means data that is supplied by the client (and can be anything) is fed into the XSLT engine as parameter without checking it first. In the best case (this is what happend to me) you have a URL like this: /foo.html?bar=x+y which gets translated to $fdat{'bar'} = 'x y' Now XSLT sees a parameter 'x y' (without the single quotes), which it can't parse and so it dies. This happens even if the XSLT stylesheet never actually defines any parameters of its own. I bet many Embperl webpages of many users can be broken just by adding spurious parameters to the URL. In a worse case the parameter could be carefully chosen to reveal data from an XML file that shouldn't be revealed. The workaround is easy, just supply an empty xsltparam. But I still think the default should be changed. Jochen -- Jochen Topf [EMAIL PROTECTED] http://www.remote.org/jochen/ +49-721-388298 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]