【发布时间】:2011-11-15 16:57:43
【问题描述】:
我正在寻找一些关于如何在客户端 JavaScript 中处理基本安全需求(例如授权)的良好资源、模式和实践。
我正在构建一个带有后端系统的网站,该系统运行一个常见的 MVC 框架。后端将处理所有真正的安全需求:授权和身份验证。前端将使用 Backbone.js、jQuery 和其他一些库构建,以提供非常丰富的用户体验。
这是我需要处理的一种场景的示例:
我有一个数据网格,上面有几个按钮。如果您在网格中选择一个项目,某些按钮将启用,因此您可以对所选项目执行该操作。这个功能很容易构建......
现在我需要考虑授权。后端服务器将只呈现允许用户使用的按钮。此外,当用户尝试执行该操作时,后端服务器将检查授权。 ...因此后端被覆盖,如果未经授权,用户将无法执行他们尝试的操作。
但是 JavaScript 呢?如果我的代码设置了一堆 jQuery 单击处理程序或其他启用和禁用按钮的事件,我如何处理不存在的按钮?我只是写一堆丑陋的if 语句来检查按钮的存在吗?或者我是否以某种方式编写 JavaScript,只允许我根据授权将现有按钮的 JavaScript 发送到浏览器?还是???
现在想象一个树视图,它可能允许也可能不允许拖放功能,基于授权......以及一个添加/编辑表单,可能基于授权存在或可能不存在......以及所有其他复杂的授权需求,使用大量 JavaScript 来运行这些前端。
我正在寻找资源、模式和实践来处理这类场景,其中后端处理真正的授权,但前端还需要根据授权来解决不存在的事情。
【问题讨论】:
-
投票迁移 - 这个论坛更多地处理具体的代码问题/解决方案,而不是扩展讨论比较方法。 FWIW,Javascript 本质上是不安全的,因为它在客户端计算机上运行。它可以用来补充后端安全性,但永远不应该被依赖作为它的替代品。
-
一般你模块化特征检测。这个想法是每个页面都有一个它需要的可能模块列表,每个模块检查 DOM 是否真的需要它。因此,您所有的按钮都变成了模块。通过使用为您执行此模块化加载的模板引擎,这将大大改善
-
哪些 StackExchange 站点更适合此操作?
-
@DerickBailey 最合适的是 StackOverflow
标签: javascript security authorization backbone.js design-patterns