2014-10-08 32 views
0

tl; dr: 使用动态视图引擎(如Sinatra + ERB)动态生成带有用于嵌入第三方网站的自定义内容的JavaScript文件是否安全/明智?从第三方网站的脚本/包含标签配置Javascript的最佳方式是什么?

具体而言,使用服务器端视图引擎将这些数据作为变量嵌入JavaScript页面是否安全/明智?

全文:

我的JavaScript/Sinatra的应用程序,其功能有点像谷歌分析,在合作伙伴的网站包含我们的JavaScript文件,以及JS代码将数据发送到我们的末日应用程序。

我想让我们的客户很容易地配置这个JavaScript包含,因为有状态数据(如他们的客户ID和当前登录的用户ID),他们需要与我们的JavaScript代码进行通信。但是,它们需要进行通信的数据必须在我们的脚本可以使用之前通过我们的服务器端数据库进行翻译。

我目前的方法感觉有点不好意思:Sinatra提供一个动态的JavaScript文件作为“视图”。该客户端包括一个脚本标签,诸如文件:

<script src="/dynamic-js/include.js?client_key=xyz&user_key=abc"> 

在Sinatra的一面,它得到这些参数,使用数据库将它们转换为内部值,然后提供一个动态的(ERB)JavaScript文件中包含的代码:

window.ourInternalVars = {}; 
window.ourInternalVars.client_int_key="<%=client_int_key%>"; 
window.ourInternalVars.user_int_key="<%=user_int_key%>"; 

我的问题是,这是否是一个“坏”的解决方案(一个可能产生不良和/或意外的结果)和/或是否有“更好”使用现有的库方法(广泛使用的方法,那些,还是遵循社区/行业最佳实践)来解决这个问题?

我明显可以用一个静态JavaScript文件来解决这个问题,该文件读取自己的URL参数并进行ajax调用来配置自身,但速度较慢(脚本开始时数据不存在)为我们的目的(它也不太可靠)。

我们也可以让我们的客户对我们的服务器进行ajax/api调用来完成转换,但是这使得我们脚本的安装更加复杂,我们希望尽可能简化他们的脚本(如果可能,一行脚本标签)。

我可能会后悔上述策略,或者这似乎是一个合理的方法来管理动态第三方输入/配置为JavaScript包括?

请注意,我还简化了上述用例,使问题更加清晰。

+0

没人说,tldr; – allenhwkim 2014-10-08 00:41:56

+0

@allenhwkim tx。 tl; dr部分添加。 – 2014-10-08 02:20:23

回答

1

如果你properlyescape的值,它看起来很好。

也许Code Review的人有更多的提示。堆栈溢出适用于您的代码无法按预期工作的情况。

+0

谢谢 - 关于将其移至Code Review的建议。 – 2015-03-24 16:36:31

相关问题