如何防止 Ember Rails 模板泄漏到浏览器中
How can Ember Rails templates be kept from leaking into the browser?
我正在考虑从AngularJS切换到Ember,作为我正在使用的几个Rails应用程序的前端框架。但是让我有点烦躁的事情涉及模板HTML如何以及何时发送到浏览器。
使用 Angular,我通常会像/api/v1/foo
那样设置一个 Rails 端点,这样调用foo.html
会渲染出一个模板,调用foo.json
会渲染出它的数据;如果我想保护foo
,我会将整个端点放在一个before_action :some_auth_method
过滤器后面,有效地阻止对模板和数据进行未经授权的访问。
使用 Ember,看起来预编译的 Handlebars 模板都以一大块发送到浏览器,这样邪恶的访问者可以很容易地看到它们的样子---数据被剥夺,这是真的,但我仍然不确定我是否愿意将有关应用程序内部工作的模糊细节泄露给每个汤姆, 迪克,还有一起发生的哈基。
所以我的第一个问题当然是:我错过了什么吗?如果我不是,那么:有什么办法可以解决这种行为吗?
不,
你没有错过任何东西,这就是 Ember 开箱即用的工作方式。有没有办法解决这种行为?可能。但在你尝试解决它之前,你应该认真考虑它是否真的值得。你真的在乎是否有人拥有你网站的HTML模板吗?如果您的安全性设置正确,则不应在意。但如果你真的在乎,以下是我可能会做的:
- 在服务器上设置路由以检查对客户端上路由的访问。
- 设置将模板从服务器发送到客户端的方法。我要么发送预编译的模板,然后使用
eval()
获取函数,要么发送 HTML 并使用 Handlebars 编译器在客户端编译它。 - 如果路由的
beforeModel
钩,请检查对路由的访问。如果用户具有访问权限,请获取模板,将其存储在Ember.TEMPLATES
然后让用户进入。如果用户没有访问权限,请将其重定向到其他位置。
您的问题中没有很多细节,所以我无法更具体,但这样的事情可以让您在需要时异步加载模板。在余烬论坛上也有类似的讨论。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- three.js内存泄漏/浏览器崩溃
- 这个JavaScript / jQuery代码是否在ie8或其他浏览器中泄漏
- 为什么浏览器中的 mocha 会抛出从 URL 检测到的全局泄漏,而不是从 UNC 路径检测到的全局泄漏
- 如何防止 Ember Rails 模板泄漏到浏览器中
- 浏览器内存泄漏
- 导致浏览器内存泄漏的javascript
- javascript和video-js在所有浏览器中的内存泄漏(用最简单的例子)
- 使用jQuery, AJAX, Google可视化API和setTimeout()时浏览器内存泄漏
- 内存泄漏递归javascript函数在IE,FF,谷歌浏览器