2011-01-22 144 views
4

我一直在尝试学习一些关于SproutCore,遵循“Todos”教程,并且我有几个问题未能在网上找到。SproutCore安全和身份验证问题

  1. SproutCore应该将所有业务逻辑移动到客户端。那不是不安全?恶意用户可能很容易篡改代码(因为它全部在客户端上)并改变应用程序的行为方式。我在这里怎么错了?
  2. SproutCore使用“DataStores”,其中一些可以是远程的。我怎样才能避免恶意用户不与自己的后端进行交互?由于代码位于客户端,因此使用某种API密钥将不起作用。这里有什么约定吗?有任何想法吗?这真让我感到困惑。

在此先感谢!

PS:有人认为Cappuccino是一个更好的选择?我决定去SproutCore,因为关于卡布奇诺的文档看起来很糟糕,尽管SproutCore的效果并不好。

回答

6

伊恩

您的疑虑是有效的。事情是,它们适用于所有客户端代码,无论是什么框架。因此:

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

此外,所有网络应用程序都应使用在系统安全性中普遍存在的众所周知的认证/授权范例。身份验证意味着您必须验证用户是谁,并且他们可以使用该系统,授权意味着服务器必须验证用户是否可以执行他们正在尝试的操作,例如,他们可以创建一个新的数据输入,或编辑一个现有的数据。不向用户展示他们不被允许执行的UI选项是一个很好的设计,但是你不应该依赖它。

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

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

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

+0

您是否知道减少客户端和服务器之间的重复工作?例如。必须在服务器上重复在客户端上完成的任何重要验证;有没有简单的机制来只写一次验证码? – 2012-04-18 14:51:03