SproutCore安全和身份验证问题

时间:2011-01-22 16:40:11

标签: javascript web-applications sproutcore

在“Todos”教程之后,我一直在努力学习SproutCore,我有一些无法在网上找到的问题。

  1. SproutCore应该将所有业务逻辑移动到客户端。那怎么不安全?恶意用户可以轻易地篡改代码(因为它全部在客户端上)并改变应用程序的行为方式。我怎么错了?
  2. SproutCore使用“DataStores”,其中一些可以是远程的。如何避免恶意用户自己不与后端交互?使用某种API密钥不起作用,因为代码在客户端。这里有某种约定吗?有任何想法吗?这真让我烦恼。
  3. 提前致谢!

    PS:有人认为Cappuccino是更好的选择吗?我决定选择SproutCore,因为关于Cappuccino的文档似乎非常糟糕,尽管SproutCore没有变得更好。

1 个答案:

答案 0 :(得分:6)

伊恩

您的担忧是有效的。问题是,无论采用何种框架,它们都适用于所有客户端代码。所以:

Web应用程序是复杂的事情。将处理移动到客户端是一件好事,因为它可以加快应用程序的响应速度。但是,服务器必须验证所有数据输入,就像在任何其他Web应用程序中一样。

此外,所有Web应用程序都应使用系统安全中普遍存在的众所周知的身份验证/授权范例。身份验证意味着您必须验证用户是否是他们所声称的用户,并且他们可以使用该系统,而授权意味着服务器必须验证用户是否可以执行他们正在尝试的操作,例如他们可以创建新的数据条目,也可以编辑现有的数据条目。优秀的设计是不向用户提供他们不允许执行的UI选项,但您不应该依赖它。

所有Web应用程序都必须执行这些操作。

关于'与后端的交互'问题:同样,所有Web应用程序都有这个问题。您可以打开firebug / webkit,查看RIA在其操作中使用的所有xhr请求,并模仿它们尝试在该系统上执行某些操作。同样,您必须通过身份验证/授权检查来处理此问题。任何人都可以使用任何webclient向服务器发送请求。由开发人员来验证该请求。

SproutCore中的DataSource只是SC应用程序与服务器交互的抽象概念。然而,在一天结束时,所有SC正在做的是向服务器发出XHR请求,就像任何其他RIA一样。